Abstract:
In one aspect, a method includes obtaining data on components of a virtualization server comprising acquiring a mapping of virtual disks in a virtual store to storage disks, obtaining data on components of a storage array comprising acquiring a mapping of logical units in the storage array to the storage disks, the logical units replicating data from a corresponding storage disk, correlating each virtual disk to a logical unit based on the mapping of the virtual disks to the storage disks and the mapping of the logical units to the storage disks, retrieving replication data of the logical units from the storage arrays and, for a selected virtual store, checking that the selected virtual store has a replica for all the required storage disks mapped to the virtual disks of the selected virtual store.

Description:
BACKGROUND 
     In a data protection system, data is stored by a host onto a primary storage disk. The data on the storage disk is also replicated on a secondary storage device. Sometime the data that is stored on the primary storage device becomes corrupted. Using the secondary storage device, the data protection system rolls back to a point in time when the data was not corrupted. 
     SUMMARY 
     In one aspect, a method includes obtaining data on components of a virtualization server comprising acquiring a mapping of virtual disks in a virtual store to storage disks, obtaining data on components of a storage array comprising acquiring a mapping of logical units in the storage array to the storage disks, the logical units replicating data from a corresponding storage disk, correlating each virtual disk to a logical unit based on the mapping of the virtual disks to the storage disks and the mapping of the logical units to the storage disks, retrieving replication data of the logical units from the storage arrays and, for a selected virtual store, checking that the selected virtual store has a replica for all the required storage disks mapped to the virtual disks of the selected virtual store. 
     In another aspect, an article includes a non-transitory machine-readable medium that stores executable instructions. The instructions causing a machine to obtain data on components of a virtualization server comprising acquiring a mapping of virtual disks in a virtual store to storage disks; obtain data on components of a storage array comprising acquiring a mapping of logical units in the storage array to the storage disks, the logical units replicating data from a corresponding storage disk; correlate each virtual disk to a logical unit based on the mapping of the virtual disks to the storage disks and the mapping of the logical units to the storage disks; retrieve replication data of the logical units from the storage arrays; and, for a selected virtual store, check that the selected virtual store has a replica for all the required storage disks mapped to the virtual disks of the selected virtual store. 
     In a further aspect, an apparatus includes circuitry to obtain data on components of a virtualization server comprising acquiring a mapping of virtual disks in a virtual store to storage disks; obtain data on components of a storage array comprising acquiring a mapping of logical units in the storage array to the storage disks, the logical units replicating data from a corresponding storage disk; correlate each virtual disk to a logical unit based on the mapping of the virtual disks to the storage disks and the mapping of the logical units to the storage disks; retrieve replication data of the logical units from the storage arrays; and, for a selected virtual store, check that the selected virtual store has a replica for all the required storage disks mapped to the virtual disks of the selected virtual store. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a data protection system with virtual stores. 
         FIG. 2  is a flowchart of an example of a process to roll back data to an earlier point in time for data associated with a virtual store. 
         FIG. 3  is a computer on which the process of  FIG. 2  may be implemented. 
     
    
    
     DETAILED DESCRIPTION 
     When a device saves data to a virtual disk, it is unaware of the physical location the data is actually being stored. This uncertainty makes it difficult for data protection systems to rollback data when virtual disks are involved. Described herein is an approach that verifies the ability to rollback data to an earlier point in time for data associated with a virtual disk. In one particular example, a user will be able to determine whether a virtual store can be rolled back to particular point in time. 
     Referring to  FIG. 1 , a data protection system  100  includes a host  102 , a virtualization server  106  and a storage array  120 . The host  102  includes devices  104   a - 104   e.    
     A virtual host is a host that runs an operating system, but is not located on a physical host (i.e., doesn&#39;t have its own hardware), but rather is an emulation of a host in the virtualization server  106  (e.g., VMware® VM guest or Hyper-V virtual host). The devices  104   a - 104   e  are the disks of the virtual hosts. 
     The virtualization server  106  includes storage disks  116   a - 116   e  and virtual stores  110   a ,  110   b , which include virtual storage disks  108   a - 108   b  and virtual storage disk  108   c , respectively. In one example, the virtual stores  110   a ,  110   b  are each a datastore used in VMware® products. The storage array  120  includes logical units (LUN)  122   a - 122   e.    
     The virtual disks  108   a - 108   c  are exported to the virtual hosts and are mounted as devices  104   a - 104   e . For example, the device  104   a  is mapped to the virtual disk  108   a , the device  104   b  is mapped to the virtual disk  108   b , the device  104   c  is mapped to the storage disk  116   c , also called a raw device mapping (RDM), the device  104   d  is mapped to the virtual disk  108   c  and the device  104   e  is mapped to the storage disk  116   e , also called a RDM. When the device  104   a  saves data to the virtual disk  108   a , the device  104   a  is actually saving data to the storage disk  116   a  and to storage disk  116   b  (because the virtual store is built on  116   a  and  116   b  and then the virtual device  108   a  is built on the virtual store (and may be allocated on one or on both devices); when the device  104   b  saves data to the virtual disk  108   b , the device  104   b  is actually saving data to the storage disk  116   a  and/or to  116   b  and when the device  104   d  saves data to the virtual disk  108   d , the device  104   d  is actually saving data to the storage disk  116   d . Likewise, the LUN  122   a  is mapped (exported) to the virtualization server  106  and is mounted on the virtualization server  106  as storage disk  116   a  and the LUN  122   b  is mapped (exported) to the virtualization server  106  and is mounted on the virtualization server  106  as storage disk  116   b.    
     Referring to  FIG. 2 , an example of a process to verifying the ability to roll back data to an earlier point in time for data associated with a virtual store is a process  200 . Process  200  obtains data on components of the virtualization server  106  ( 202 ). For example, information on the virtual stores  110   a ,  110   b  including each name and type. In one example, the following data is retrieved for the virtual stores:
     Name—The virtual store name   Datacenter—the virtual environment ID   Type—The virtual store type, such as in VMware® which is called a “VMware® datastore,” for example.   

     In one example, the data is retrieved from the virtualization server  106  or from any management server like in VMware® the V-center (VMware® management server), for example. In addition, the data includes information on the storage disks  116   a - 116   e  including their names and types. For example, one type of storage disk is a storage disk that is not linked through a virtual store  110  such as storage disk  116   c  and  116   e  (each being called an RDM device). Another type of storage disk is a storage disk that is linked through a virtual store. For example, storage disks  116   a ,  116   b  are linked through the virtual store  110   a  and the storage disk  116   d  is linked through the virtual store  110   b.    
     Process  200  obtains data on the storage array  120  ( 206 ). For example, the data is retrieved from each of the LUNs  122   a - 122   e  and includes the mapping to its respective storage disk  116   a - 116   e.    
     Process  200  correlates virtual disks  108   a - 108   c  to components of the storage array  120  ( 210 ). For example, after acquiring the mapping from the virtual disks  108   a - 108   c  to their respective storage disks  116   a ,  116   b ,  116   d  and the mapping from the LUNs  122   a - 122   e  to their respective storage disks  116   a - 116   e , a correlation is performed between virtual disks  108   a - 108   c  and their respective LUNs  122   a ,  122   b ,  122   d.    
     Process  200  retrieves replicated copies of information stored on the components of the storage array  120  ( 214 ). For example, the replicated copies from the LUNs  122   a - 122   e  are retrieved (in one example, a LUN  122   a - 122   e  can be replicated to another LUN  122   a - 122   e ). For example, in order to restore the virtual store  110   a ,  110   b , its required storage disks  116   a ,  116   b ,  116   d  (e.g., all the devices that are not used as RDM) should have a copy from its corresponding LUN  122   a ,  122   b ,  122   d . That is, the replicated information of the LUNs  122   a ,  122   b ,  122   d  is all that the storage devices  116   a ,  116   b ,  116   d  copies. In one example, a user selects how far back to roll the data is required. In a further example, the user selects which virtual store to roll back and will get the available recovery points. 
     For each virtual store  110   a ,  110   b  selected, process  200  verifies that there is a set of copies that could be used to roll back data to an earlier point in time ( 218 ) when needed. For example, for a selected virtual store, the selected virtual store is checked to determine if it has a replica for all the required storage disks mapped to the virtual disks of the selected virtual store. In one particular example, the data on each of the storage disks  116   a ,  116   b  mapped to a virtual disk  108   a ,  108   b  of the virtual store  110   a , is rolled back to an earlier point in time by using the replicated data of LUNs  122   a ,  122   b . In another example, the RDM device, the storage disk  116   c  is excluded from roll backs because it is not used to build the virtual store. In one particular example, the data is used to validate the ability to roll back using the techniques described in U.S. patent application Ser. No. 11/403,745, filed Apr. 12, 2006 having a U.S. patent Publication No. 2006/0288183 which incorporated herein in its entirety. In one example, the RDM devices, storage disks  116   c ,  116   e  are filtered out. 
     Process  200  performs a quality check ( 220 ). For example, each of the virtual disks  108   a ,  108   b  of the virtual store  110   a  is checked to determine if each of the virtual disks  108   a ,  108   b  may be rolled back to the earlier point in time. If each of the virtual disks  108   a ,  108   b  were not replicated at an earlier point in time, an error message is sent, for example to a user, indicating that the rollback was not completed. 
     In another example, each of the virtual disks  108   a ,  108   b  of the virtual store  110   a  is checked to determine if the replication/copy was performed correctly and is in a consistent mode. If any of the replicated data on the virtual disks  108   a ,  108   b  is not correct, an error message is sent, for example to a user, indicating that the replicated copy for the specific time is incorrect. 
     In a further example, the replicated data is checked to determine if it was replicated/copied in accordance with a data protection policy. If any of replicated/copied data on the virtual disks  108   a ,  108   b  was not done in accordance with a data protection policy, an error message is sent, for example to a user, indicating that there is a compliance problem with the replicated data. 
     Referring to  FIG. 3 , a computer includes a processor  302 , a volatile memory  304 , a non-volatile memory  306  (e.g., hard disk), a graphical user interface (GUI)  308  (e.g., a mouse, a keyboard, a display, for example). The non-volatile memory  306  stores computer instructions  312 , an operating system  316  and data  318 . In one example, the computer instructions  312  are executed by the processor  302  out of volatile memory  304  to perform all or part of the process  200 . 
     The processes described herein (e.g., the process  200 ) are not limited to use with the hardware and software of  FIG. 3 ; they may find applicability in any computing or processing environment and with any type of machine or set of machines that is capable of running a computer program. The processes described herein may be implemented in hardware, software, or a combination of the two. The processes described herein may be implemented in computer programs executed on programmable computers/machines that each includes a processor, a non-transitory machine-readable medium or other article of manufacture that is readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device to perform any of the processes described herein and to generate output information. The system may be implemented, at least in part, via a computer program product, (e.g., in a non-transitory machine-readable storage medium), for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers)). Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs may be implemented in assembly or machine language. The language may be a compiled or an interpreted language and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. A computer program may be stored on a non-transitory machine-readable medium that is readable by a general or special purpose programmable computer for configuring and operating the computer when the non-transitory machine-readable medium is read by the computer to perform the processes described herein. For example, the processes described herein may also be implemented as a non-transitory machine-readable storage medium, configured with a computer program, where upon execution, instructions in the computer program cause the computer to operate in accordance with the processes. A non-transitory machine-readable medium may include but is not limited to a hard drive, compact disc, flash memory, non- volatile memory, volatile memory, magnetic diskette and so forth but does not include a transitory signal per se. 
     The processes described herein are not limited to the specific examples described. For example, the process  200  is not limited to the specific processing order of  FIG. 2 . Rather, any of the processing blocks of  FIG. 2  may be re-ordered, combined or removed, performed in parallel or in serial, as necessary, to achieve the results set forth above. 
     The processing blocks in  FIG. 2  associated with implementing the system may be performed by one or more programmable processors executing one or more computer programs to perform the functions of the system. All or part of the system may be implemented as special purpose logic circuitry (e.g., an FPGA (field programmable gate array) and/or an ASIC (application-specific integrated circuit)). 
     Elements of different embodiments described herein may be combined to form other embodiments not specifically set forth above. Other embodiments not specifically described herein are also within the scope of the following claims.