Abstract:
A method of tier management of data comprises performing a tier migration log information setup process which includes selecting an area specified by a virtual volume address and a logical volume address; determining a destination tier for the area based on a number of accesses to the area; and updating a tier migration log information by inputting the determined destination tier and a time; and performing a process using the tier migration log information to determine whether to migrate a specific area which includes loading a tier migration log from the tier migration log information by selecting a specific time; checking if a current tier of the specific area equals a destination tier specified by the tier migration log; and if the current tier is not equal to the destination tier, migrating the specific area to the destination tier.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    The present invention relates generally to thin provisioning and tier management and, more particularly, to a method and an apparatus to save and restore tier information. 
         [0002]    In recent years, thin provisioning has become popular. Thin provisioning is a method for allocating area for a storage subsystem that receives a write command to unallocated area. Currently, a storage subsystem migrates frequently accessed allocated area to fast and expensive media and migrates rarely accessed allocated area to slow and cheap media. As such, an area accessed by a program that runs only at specified times is not accessed and is moved to slow media when the program does not run. However, a problem with performance will occur when the program starts. 
       BRIEF SUMMARY OF THE INVENTION 
       [0003]    Exemplary embodiments of the invention provide a method and an apparatus to save and restore tier information. In a specific embodiment, the storage subsystem records tier migration log information. The tier migration log includes the relationship between area and tier when the area is moved to a different tier. The storage subsystem moves the area to the original tier using the tier migration log information to restore the tier when the job starts. 
         [0004]    An aspect of the present invention is directed to a method of tier management of data, in a system which includes a host, a network, and a storage system coupled to the host via the network, the storage system having a memory, a plurality of virtual volumes, a plurality of logical volumes, and a plurality of physical media. The method comprises performing a tier migration log information setup process which includes selecting an area specified by a virtual volume address and a logical volume address; determining a destination tier for the area based on a number of accesses to the area; and updating a tier migration log information by inputting the determined destination tier and a time; and performing a process using the tier migration log information to determine whether to migrate a specific area which includes loading a tier migration log from the tier migration log information by selecting a specific time; checking if a current tier of the specific area equals a destination tier specified by the tier migration log; and if the current tier is not equal to the destination tier, migrating the specific area to the destination tier. 
         [0005]    In some embodiments, the method further comprises keeping the specific area in the current tier if the current tier is equal to the destination tier. The method further comprises storing logical volume information of the logical volumes, which includes logical volume name, logical volume address, media type, RAID group name, and RAID group address. The method further comprises storing virtual volume information of the logical volumes, which includes virtual volume name, virtual volume address, logical volume name, logical volume address, number of access, and access capacity. The method further comprises storing tier and media definition information, which includes tier, media type, and capacity threshold; wherein the current tier of the specific area is determined from the virtual volume information, the logical volume information, and the tier and media definition information. The destination tier is determined with reference to the virtual volume information and the tier and media definition information. A logical volume capacity is calculated from the logical volume address and the capacity threshold from the tier and media definition information; and the destination tier for the area is determined based on the number of accesses to the area and the logical volume capacity. The method further comprises storing tier destination information which includes virtual volume name, virtual volume address, capacity, number of access, access per capacity, current tier, and destination tier, that are organized in a descending order of access per capacity, wherein the tier destination information is created based on the virtual volume information and the media type from the logical volume information. 
         [0006]    In specific embodiments, the tier migration log information includes log ID, time, and performance corresponding to the log ID and time, and further includes virtual volume name, virtual volume address, and tier corresponding to the virtual volume name and virtual volume address. The method further comprises, after one of a read access or a write access to an area, updating the number of access to the area. The tier migration log information is updated by inputting the determined destination tier and the time, and performance of access for the area. The performance of access is measured in one of IOPS (Input Output Operations Per Second) or BPS (Bits Per Second). 
         [0007]    In accordance with another aspect of the invention, a storage system of tier management of data is coupled with a host via a network and it comprises a processor; a memory; a plurality of virtual volumes; a plurality of logical volumes; a plurality of physical media; and a tier control module. The tier control module is configured to set up tier migration log information, which includes selecting an area specified by a virtual volume address and a logical volume address; determining a destination tier for the area based on a number of accesses to the area; and updating a tier migration log information by inputting the determined destination tier and a time. The tier control module is configured to determine whether to migrate a specific area using the tier migration log information, which includes loading a tier migration log from the tier migration log information by selecting a specific time; checking if a current tier of the specific area equals a destination tier specified by the tier migration log; and if the current tier is not equal to the destination tier, migrating the specific area to the destination tier. 
         [0008]    Another aspect of this invention is directed to an interface for tier management of data by performing a tier migration log information setup process which includes selecting an area specified by a virtual volume address and a logical volume address, determining a destination tier for the area based on a number of accesses to the area, and updating a tier migration log information by inputting the determined destination tier and a time and performance of access for the area; and performing a process using the tier migration log information to determine whether to migrate a specific area which includes loading a tier migration log from the tier migration log information by selecting a specific time, checking if a current tier of the specific area equals a destination tier specified by the tier migration log, and if the current tier is not equal to the destination tier, migrating the specific area to the destination tier, wherein the current tier of the specific area is determined from tier and media definition information. The interface comprises computer readable program code devices for receiving, from a user, the tier and media definition information which includes tier, media type, capacity threshold, and default tier; displaying the received tier and media definition information on a tier management screen; and displaying an OK button for the user to activate to update the tier and media definition information displayed on the tier management screen. 
         [0009]    In specific embodiments, the interface further comprises computer readable program code devices for displaying a restore point selection screen including a plurality of restore points each having a time and a performance of access for an area for a user to select one of the restore points with a time corresponding to the specific time; and displaying a RESTORE button for the user to activate to restore the selected restore point. 
         [0010]    These and other features and advantages of the present invention will become apparent to those of ordinary skill in the art in view of the following detailed description of the specific embodiments. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]      FIG. 1  illustrates an example of a hardware configuration of an information system in which the method and apparatus of the invention may be applied. 
           [0012]      FIG. 2  illustrates an example of the memory in the application server of  FIG. 1  and the memory in the storage subsystem of  FIG. 1 . 
           [0013]      FIG. 3  shows an example of the RAID group information, the logical volume information, and the pool information. 
           [0014]      FIG. 4  shows an example of the virtual volume information and the tier and media definition information. 
           [0015]      FIG. 5  shows an example of the tier destination information and the tier migration log information. 
           [0016]      FIG. 6  shows an example of a tier management screen and a restore point selection screen. 
           [0017]      FIG. 7  shows an example of a read command and a write command. 
           [0018]      FIG. 8  is an example of a flow diagram showing that the storage subsystem reads data from the SSD and the HDD, and writes data to the SSD and the HDD when the storage subsystem receives the read command or the write command from the application server. 
           [0019]      FIG. 9  is an example of a flow diagram showing regularly executed tier migration. 
           [0020]      FIG. 10  is an example of a flow diagram showing tier restoration. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0021]    In the following detailed description of the invention, reference is made to the accompanying drawings which form a part of the disclosure, and in which are shown by way of illustration, and not of limitation, exemplary embodiments by which the invention may be practiced. In the drawings, like numerals describe substantially similar components throughout the several views. Further, it should be noted that while the detailed description provides various exemplary embodiments, as described below and as illustrated in the drawings, the present invention is not limited to the embodiments described and illustrated herein, but can extend to other embodiments, as would be known or as would become known to those skilled in the art. Reference in the specification to “one embodiment,” “this embodiment,” or “these embodiments” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention, and the appearances of these phrases in various places in the specification are not necessarily all referring to the same embodiment. Additionally, in the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that these specific details may not all be needed to practice the present invention. In other circumstances, wellknown structures, materials, circuits, processes and interfaces have not been described in detail, and/or may be illustrated in block diagram form, so as to not unnecessarily obscure the present invention. 
         [0022]    Furthermore, some portions of the detailed description that follow are presented in terms of algorithms and symbolic representations of operations within a computer. These algorithmic descriptions and symbolic representations are the means used by those skilled in the data processing arts to most effectively convey the essence of their innovations to others skilled in the art. An algorithm is a series of defined steps leading to a desired end state or result. In the present invention, the steps carried out require physical manipulations of tangible quantities for achieving a tangible result. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals or instructions capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, instructions, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, can include the actions and processes of a computer system or other information processing device that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system&#39;s memories or registers or other information storage, transmission or display devices. 
         [0023]    The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may include one or more general-purpose computers selectively activated or reconfigured by one or more computer programs. Such computer programs may be stored in a computer readable storage medium, such as, but not limited to optical disks, magnetic disks, readonly memories, random access memories, solid state devices and drives, or any other types of media suitable for storing electronic information. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs and modules in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform desired method steps. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. The instructions of the programming language(s) may be executed by one or more processing devices, e.g., central processing units (CPUs), processors, or controllers. 
         [0024]    Exemplary embodiments of the invention, as will be described in greater detail below, provide apparatuses, methods and computer programs for saving and restoring tier information in the thin provisioning context. 
         [0025]    System Configuration 
         [0026]      FIG. 1  illustrates an example of a hardware configuration of an information system in which the method and apparatus of the invention may be applied. The system comprises an application server  100 , a SAN (Storage Area Network)  120 , a LAN (Local Area Network)  140 , and a storage subsystem  160 . The application server  100  comprises a CPU (Central Processing Unit)  101 , a memory  102 , a HDD (Hard Disk Drive)  103 , a SAN interface  104 , and a LAN interface  105 . 
         [0027]    The CPU  101  reads programs from the memory  102  and executes the programs. The memory  102  reads programs and data from the HDD  103  when the application server  100  starts and stores the programs and the data. The HDD  103  stores programs and data. The SAN interface  104  connects the application server  100  and the SAN  120 . The SAN  120  connects the application server  100  and the storage subsystem  160 . The application server  100  uses the SAN  120  to send application data to the storage subsystem  160  and receive application data from the storage subsystem  160 . 
         [0028]    The storage subsystem  160  comprises a SAN interface  161 , a CPU  163 , a memory  164 , a disk interface  165 , a SSD (Solid State Drive)  166 , and a HDD  167 . The SAN interface  161  connects the storage subsystem  160  and the SAN  120 . The CPU  163  reads programs from the memory  164  and executes the programs. The memory  164  reads programs and data from the HDD  167  and SSD  166  when the storage subsystem  160  starts and stores the programs and the data. The disk interface  165  connects the storage subsystem  160 , the SSD  166 , and the HDD  167 . The SSD  166  stores programs and data. The HDD  167  stores programs and data. 
         [0029]      FIG. 2  illustrates an example of the memory  102  in the application server of  FIG. 1  and the memory  164  in the storage subsystem  160  of  FIG. 1  according to this embodiment. 
         [0030]    The memory  102  comprises an OS (Operating System) program  201  and an application program  202 . The OS program  201  executes the application program  202 . The application program  202  (e.g., database program) reads data from the storage subsystem  160 , processes data, and writes the results to the storage subsystem  160 . 
         [0031]    The memory  164  comprises a disk control program  221 , RAID (Redundant Arrays of Inexpensive (or Independent) Disks) group information  222 , logical volume information  223 , pool information  224 , virtual volume information  225 , tier and media definition information  226 , tier destination information  227 , tier migration log information  228 , and tier control program  229 . 
         [0032]    The disk control program  221  receives a read command and a write command from the application server  100 , reads data from the SSD  166  and the HDD  167 , and writes data to the SSD  166  and the HDD  167  using the RAID group information  222 , the logical volume information  223 , the pool information  224 , the virtual volume information  225 , and the tier and media definition information  226 . The tier control program  229  calculates tier destination information  227  using the logical volume information  223 , moves an area to different tiers using tier destination information  227 , and records tier migration log information  228 . 
         [0033]      FIG. 3  shows an example of the RAID group information  222 , the logical volume information  223 , and the pool information  224 . 
         [0034]    The RAID group information  222  includes columns of a RAID group name  301 , a media name  302 , a media type  303 , and a RAID level  304 . For example, the row  305  shows that “RG A” has “SSD A,” “SSD B,” “SSD C,” and “SSD D,” the media type of “RG A” is “SSD,” and the RAID level of “RG A” is “RAID  10  ( 2 D+ 2 D).” 
         [0035]    The logical volume information  223  includes columns of a logical volume name  321 , a logical volume address  322 , a media type  323 , a RAID group name  324 , and a RAID group address  325 . For example, the row  326  shows that the media type of “L-VOL A” is “SSD” and “L-VOL A” is allocated to the address from “ 0 ” to “ 199  ” in “RG A.” 
         [0036]    The pool information  224  includes columns of a pool name  341 , a logical volume name  342 , and a virtual volume name  343 . For example, the row  344  shows “POOL A” has “L-VOL A,” “L-VOL B,” and “L-VOL C,” and the area of “POOL A” is used by “V-VOL A.” 
         [0037]      FIG. 4  shows an example of the virtual volume information  225  and the tier and media definition information  226 . 
         [0038]    The virtual volume information  225  includes columns of a virtual volume name  401 , a virtual volume address  402 , a logical volume name  403 , a logical volume address  404 , a number of access  405 , and an access per capacity  406 . For example, the row  407  shows that the address from “ 0 ” to “ 99 ” in “V-VOL A” is allocated to the address from “ 0 ” to “ 99 ” in “L-VOL A,” the number of access of the address from “ 0 ” to “ 99 ” in “V-VOL A” is “ 11000 ,” and the access per capacity of the address from “ 0 ” to “ 99 ” in “V-VOL A” is “ 110 .” 
         [0039]    The tier and media definition information  226  includes columns of a tier  421 , a media type  422 , a capacity threshold  423 , and a default tier  424 . The capacity threshold  423  is a maximum capacity rate that the media of the media type  422  is allocated to a virtual volume. For example, the row  425  shows an object defined such that tier being “ 0 ” in the object and tier definition information  226  is allocated to “SSD” media, “80%” area of a logical volume for which the media type is “SSD” is allocated to a virtual volume, and tier “ 0 ” is not the default tier. 
         [0040]      FIG. 5  shows an example of the tier destination information  227  and the tier migration log information  228 . 
         [0041]    The tier destination information  227  includes columns of a virtual volume name  501 , a virtual volume address  502 , a capacity  503 , a number of access  504 , a access per capacity  505 , a current tier  506 , and a destination tier  507 . For example, the row  508  shows that the capacity of the address from “0” to “99” in “V-VOL A” is “100,” the number of access of the address from “0” to “99” in “V-VOL A” is “11000,” the access per capacity of the address from “0” to “99” in “V-VOL A” is “110,” the current tier of the address from “0” to “99” in “V-VOL A” is “0,” and the destination tier of the address from “0” to “99” in “V-VOL A” is “0.” 
         [0042]    The tier migration log information  228  includes columns of a log ID  521 , date and time  522 , IOPS  523 , a virtual volume name  541 , a virtual volume address  542 , and a tier  543 . For example, the row  524  and the row  544  show log ID is “ 5 ,” the address from “ 0 ” to “ 99 ” in “V-VOL A” was moved to tier “ 0 ” at “Feb. 16, 2010 06:03 PM,” and the amount of access to the storage subsystem  160  at “Feb. 16, 2010 06:03 PM” was “ 7 ” IOPS (Input Output Operations Per Second). The IOPS is one measure of the performance of the access. Another measure of the performance is BPS (Bits Per Second). 
         [0043]      FIG. 6  shows an example of a tier management screen  600  and a restore point selection screen  620 . An administrator inputs a tier  601 , a media type  602 , a capacity threshold  603 , and a default tier  604 . The tier and media definition information  226  is updated to the data input by the administrator when the administrator pushes an “OK” button  607 . 
         [0044]    The restore point selection screen  620  includes columns of a restore point  621 , date and time  622 , and IOPS  623 . For example, the row  624  shows the date and time that some addresses are moved to different tier was “Feb. 16, 2010 06:03 PM” and the amount of access to the storage subsystem  160  at “Feb. 16, 2010 06:03 PM” was “ 7 ” IOPS. An administrator selects a restore point and pushes a “restore” button  629 . 
         [0045]      FIG. 7  shows an example of a read command  700  and a write command  720 . The read command  700  includes a command type  701 , a volume name  702 , and a volume address  703 . The read command  700  is sent from the application server  100  to the storage subsystem  160 . The write command  720  includes a command type  721 , a volume name  722 , a volume address  723 , and data  724 . The write command  720  is sent from the application server  100  to the storage subsystem  160 . 
         [0046]    Flow of Process 
         [0047]      FIG. 8  is an example of a flow diagram showing that the storage subsystem  160  reads data from the SSD  166  and the HDD  167 , and writes data to the SSD  166  and the HDD  167  when the storage subsystem  160  receives the read command  700  or the write command  720  from the application server  100 . 
         [0048]    In step  801 , the disk control program  221  receives the read command  700  or the write command  720  from the application server  100 . In step  802 , if the command that the disk control program  221  received in step  801  is the write command  720 , then the process goes to decision step  803 ; if not, then the process goes to decision step  806 . 
         [0049]    In decision step  803  (write command), if the volume name  722  and the volume address  723  are allocated in the virtual volume information  225 , then the process goes to step  805 ; if not, then the process goes to step  804 . In step  804 , the disk control program  221  allocates an area of a logical volume to an unallocated area of a virtual volume. For example, the disk control program  221  selects the media “SATA HDD” for which the default tier  424  is “X” to allocate area. The volume name  722  of the write command  720  is “V-VOL A.” According to the pool information  224 , “V-VOL A” belongs to “POOL A.” “POOL A” comprises “L-VOL A,” “L-VOL B,” and “L-VOL C.” According to the logical volume information  223 , the media type  323  of “L VOL A” is “SSD,” the media type  323  of “L-VOL B” is “SAS HDD,” and the media type  323  of “L-VOL C” is “SATA HDD.” Therefore the disk control  301  program can select “L-VOL C.” The disk control program  221  updates the virtual volume information  305  to the result of step  804 . In step  805 , the disk control program  221  gets the volume name  722  and the volume address  723  from the write command  720 , gets the logical volume name  403  and the logical volume address  404  from the virtual volume information  225 , gets the RAID group name  324  and the RAID group address  325  from the logical volume information  223 , gets the media name  302  from the RAID group information  222 , and writes the data  724  to the SSD  166  and the HDD  167 . 
         [0050]    In decision step  806  (not write command), if the volume name  702  and the volume address  703  are allocated in the virtual volume information  225 , then the process goes to step  808 ; if not, then the process goes to step  807 . In step  807 , the disk control program  221  returns “ 0 ” to the application server  100  because the area specified by the volume name  702  and the volume address  703  is not one to which data is written. In step  808 , the disk control program  221  gets the volume name  322  and the volume address  323  from the read command  700 , gets the logical volume name  403  and the logical volume address from the virtual volume information  225 , gets the RAID group name  324  and the RAID group address  325  from the logical volume information  223 , gets the media name  302  from the RAID group information  222 , and reads data from the SSD  166  and the HDD  167 . 
         [0051]    In step  809  (after step  805 ,  807 , or  808 ), the disk control program  221  increments the number of access  405  by 1, and calculates the access per capacity  406 . For example, the virtual volume address  402  is “ 0 - 99 ,” and the number of access is “ 11000 ” in the row  407 . Therefore, the access per capacity  406  in the row  407  is “ 11000 ” divided by “100” which is “ 110 .” 
         [0052]      FIG. 9  is an example of a flow diagram showing regularly executed tier migration. For example the flow is executed hourly. In step  901 , the tier control program  229  gets the virtual volume information  225  and the media type  323  from the logical volume information  223 , makes the tier destination information  227 , and sorts the rows in descending order of the number of access  505 . In step  902 , the tier control program  229  determines which area is moved to a different tier from a logical volume capacity that is calculated from the logical volume address  322  and the capacity threshold  423  from the tier and media definition information  226 . For example, the capacity threshold  423  of tier “ 0 ” is “80%,” the logical volume of tier “ 0 ” is “L VOL A,” and the capacity of “L-VOL A” is 200 bytes. Therefore the capacity allocated to tier “ 0 ” is 160 bytes. The capacity  503  is 100 bytes in the row  508 , the capacity  503  is 50 bytes in the row  509 , and the capacity  503  is 50 in the row  510 . The sum of the capacity  503  in the row  508  and the capacity  503  in the row  509  is  150 ; and the sum of the capacity  503  in the row  508 , the capacity  503  in the row  509 , and the capacity  503  in the row  510  is 200. Therefore, the destination tier  507  of the address from “ 0 ” to “ 99 ” in “V-VOL A” and the address from “ 0 ” to “ 49 ” in “V-VOL B” is tier “ 0 .” 
         [0053]    In step  903 , the tier control program  229  selects one row from the tier destination information  227 . In judgment step  904 , if the current tier  506  obtained at step  903  equals the destination tier  507  obtained at step  903 , then the process goes to judgment step  906 ; if not, then the process goes to step  905 . In step  905 , the tier control program  229  copies the area selected at step  903  to the destination tier  507  obtained at step  903 . For example, the address from “ 150 ” to “ 199 ” in “V-VOL A” is mapped to the address from “ 0 ” to “ 49 ” in “L-VOL B,” the address from “ 150 ” to “ 199 ” in “L-VOL A” is not mapped anywhere. Therefore, the tier control program  229  copies data on the address from “ 0 ” to “ 49 ” in “L-VOL B” to the address from “ 150 ” to “ 199 ” in “L-VOL A” and updates the virtual volume information  225 . In judgment step  906 , if all rows in the tier destination information  227  are not processed, then the process goes back to step  903 ; otherwise, the process ends. 
         [0054]      FIG. 10  is an example of a flow diagram showing tier restoration. For example the flow is executed hourly. In step  1001 , the tier control program  229  gets date and time of a restore point from the restore point selection screen  620 . For example, the restore point is selected in the row  624 . Therefore the date and time of the restore point is “Feb. 16, 2010 06:03 PM.” In step  1002 , the tier control program  229  gets the tier migration log information  228  that the data and time  522  equals the data and time obtained at step  1001 . 
         [0055]    In step  1003 , the tier control program  229  selects one row from the tier migration log information  228 . In step  1004 , the tier control program  229  gets current tier of the area selected at step  1003  from the virtual volume information  225 , the logical volume information  223 , and tier and media definition information  226 . For example, when the row  544  is selected at step  1003 , the address from “ 0 ” to “ 99 ” in “V-VOL A” is tier “ 0 .” 
         [0056]    In step  1005 , if the tier  543  obtained at step  1003  equals the tier  421  obtained at step  1004 , then the process goes to judgment step  1007 ; if not, then the process goes to step  1006 . In step  1006 , the tier control program  229  copies the area selected at step  1003  to the tier  543  obtained at step  903 . For example, if the address from “ 0 ” to “ 49 ” in “V-VOL A” is not placed on tier “ 0 ,” then the tier control program  229  copies data on the address from “ 0 ” to “ 49 ” in “V-VOL A” to vacant area on tier “ 0 .” In judgment step  1007 , if all rows in the tier migration log information  228  are not processed, then the process goes back to step  1003 ; otherwise, the process ends. 
         [0057]    Of course, the system configuration illustrated in  FIG. 1  is purely exemplary of information systems in which the present invention may be implemented, and the invention is not limited to a particular hardware configuration. The computers and storage systems implementing the invention can also have known I/O devices (e.g., CD and DVD drives, floppy disk drives, hard drives, etc.) which can store and read the modules, programs and data structures used to implement the abovedescribed invention. These modules, programs and data structures can be encoded on such computerreadable media. For example, the data structures of the invention can be stored on computerreadable media independently of one or more computerreadable media on which reside the programs used in the invention. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include local area networks, wide area networks, e.g., the Internet, wireless networks, storage area networks, and the like. 
         [0058]    In the description, numerous details are set forth for purposes of explanation in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that not all of these specific details are required in order to practice the present invention. It is also noted that the invention may be described as a process, which is usually depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. 
         [0059]    As is known in the art, the operations described above can be performed by hardware, software, or some combination of software and hardware. Various aspects of embodiments of the invention may be implemented using circuits and logic devices (hardware), while other aspects may be implemented using instructions stored on a machinereadable medium (software), which if executed by a processor, would cause the processor to perform a method to carry out embodiments of the invention. Furthermore, some embodiments of the invention may be performed solely in hardware, whereas other embodiments may be performed solely in software. Moreover, the various functions described can be performed in a single unit, or can be spread across a number of components in any number of ways. When performed by software, the methods may be executed by a processor, such as a general purpose computer, based on instructions stored on a computerreadable medium. If desired, the instructions can be stored on the medium in a compressed and/or encrypted format. 
         [0060]    From the foregoing, it will be apparent that the invention provides methods, apparatuses and programs stored on computer readable media for saving and restoring tier information. Additionally, while specific embodiments have been illustrated and described in this specification, those of ordinary skill in the art appreciate that any arrangement that is calculated to achieve the same purpose may be substituted for the specific embodiments disclosed. This disclosure is intended to cover any and all adaptations or variations of the present invention, and it is to be understood that the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification. Rather, the scope of the invention is to be determined entirely by the following claims, which are to be construed in accordance with the established doctrines of claim interpretation, along with the full range of equivalents to which such claims are entitled.