Abstract:
A method, article of manufacture, and apparatus for passively migrating a consumer from a legacy backup management system to a modern backup management system is discussed. A new hardware device may virally deploy the backup software throughout the consumer system. If the consumer decides the new backup system is performing optimally, it may disable the legacy system.

Description:
FIELD OF THE INVENTION 
     This invention relates generally to data protection systems, and more particularly to systems and methods for passively migrating from a legacy data protection system to a new one. 
     BACKGROUND OF THE INVENTION 
     General purpose computers perform a significant role in most people&#39;s personal and professional lives. At home, a general purpose computer may manage an individual&#39;s family photos, financial records, and person media, among other things. At work, the professional&#39;s computer may contain important documents and files related to his work activity. Whether at work or at home, loss of information residing on a general purpose computer may have a devastating effect on its owner. 
     Data protection systems may be used to backup general purpose computer systems to a backup location. This backup location may be a backup server in the office, an external hard drive, and/or the public and/or private cloud. In the event of a disaster resulting in loss of data on a general purpose computer, these backup locations may be used to restore any lost information. 
     There is a need, therefore, for an improved method, system, and apparatus for data protection systems. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which: 
         FIG. 1  illustrates an architecture for passive data protection tool migration consistent with an embodiment of the present disclosure. 
         FIG. 2  illustrates a server tree for deployed data protection services consistent with an embodiment of the present disclosure. 
         FIG. 3  is a flowchart illustrating a process for passive data protection tool migration consistent with an embodiment of the present disclosure. 
         FIG. 4  is a general purpose computer system consistent with an embodiment of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. While the invention is described in conjunction with such embodiment(s), it should be understood that the invention is not limited to any one embodiment. On the contrary, the scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications, and equivalents. For the purpose of example, numerous specific details are set forth in the following description in order to provide a thorough understanding of the present invention. These details are provided for the purpose of example, and the present invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the present invention is not unnecessarily obscured. 
     It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable medium such as a computer readable storage medium or a computer network wherein computer program instructions are sent over optical or electronic communication links. Applications may take the form of software executing on a general purpose computer or be hardwired or hard coded in hardware. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. 
     An embodiment of the invention will be described with reference to a data storage system in the form of a storage system configured to store files, but it should be understood that the principles of the invention are not limited to this configuration. Rather, they are applicable to any system capable of storing and handling various types of objects, in analog, digital, or other form. Although terms such as document, file, object, etc. may be used by way of example, the principles of the invention are not limited to any particular form of representing and storing data or other information; rather, they are equally applicable to any object capable of representing information. 
     The method, processes, and systems discussed herein provide a mechanism for passively migrating from a legacy data protection solution, such as a backup management solution, to a newer one. Consumers are often reluctant to upgrade or change their data protection system, even though their legacy system may be several years or even decades old. The learning curve associated with a newer system may be deemed too costly, even if there are significant savings in the long term. Additionally, there may be compatibility issues when a new system attempts to access backups stored by a legacy system. These compatibility issues may be further compounded if the legacy system stores data using a proprietary data format. The following system attempts to alleviate some of these concerns, and provides a system that passively migrates a consumer from a legacy system to a new, modern data protection system. 
     Turning now to  FIG. 1 , a system consistent with an embodiment of the present disclosure is discussed. The system may include one or more clients  100  in communication with network  102 . Clients  100  may be, for example, servers, desktop, laptop, or mobile computers in a corporate environment. Similarly, network  102  may be a corporate intranet and/or a virtual or physical network accessible through a wired, wireless, and/or VPN connection. Clients  100  may include or have access to information that needs to be protected, such as by performing a backup over network  102 . In some embodiments, the information may be stored on either an internal or external storage device. 
     Legacy data protection system  104  may be a computer application operating on computer server  106  and coordinating data protection tasks, such as backups from client  100 . In some embodiments, legacy data protection system may communicate with data protection processes executing on client  100  over network  102 . Legacy data protection system may control the flow of the data from client  100  and store it in a backup repository, which may reside on computer server  106 . Additionally or alternatively, the repository may reside on any of the additional computer servers  108 . In some embodiments, the repository may reside on an external storage devices, such as network attached storage (“NAS”). 
     In an embodiment, legacy data protection system  104  may be an old, outdated, obsolete system. This system may be several years or decades old, and may not be designed for modern day computer usage. The consumer who owns the system, however, may be reluctant to upgrade or switch to a newer system for the reasons discussed above. Despite these obstacles, however, the consumer will likely need to eventually install additional hardware as backup sizes grow or as other data protection processes consume resources. For example, a repository storing backups managed by legacy data protection system  104  may eventually run out of space, and new storage will be added. This new storage or other hardware may present an opportunity to passively migrate the consumer from the legacy data protection system to a new data protection system. 
     In an embodiment, additional data repository  110  may be connected to network  102 . Data repository  110  may be configured to provide additional storage, memory, and/or processing power to legacy data protection system  104 . In some embodiments, legacy data protection system  104  may be configured to store the backups in a plurality of different backup repository types. A competitor to legacy data protection system  104  could, for example, produce repository  110 . Additionally or alternatively, the developer of legacy data protection system  104  may provide repository  110 . 
     Repository  110  may come pre-loaded with new data protection system  112 . Data protection system  112  may be a newer or different data protection system than legacy backup system  104 . Data protection system  112  may be any software solution configured to protect data on a client device, and in some embodiments is a backup manger. Data protection system  112  may comprise one or more data protection services, such as a cataloging service for cataloging backups, a scheduling service for scheduling backups, and/or a reporting service. In an embodiment, data protection system  112  may be able to see all the data stored in repository  110  since it is operating in the same system. Further, data protection system  112  may comprise all or a portion of the data protection system the consumer will migrate to from legacy data protection system  104 . 
     Since data protection system  112  has visibility into repository  110 , it may run tests or simulations over the data entering, stored on, or leaving the system. Data protection system  112 , or another computer process, may use this data to provide reports to the consumer and/or producer of repository  110 . These reports may be compared to similar reports generated for legacy data protection system  104 , and may thereafter be used to justify the cost of migrating away from legacy data protection system  104 . In some embodiments these reports may include data throughput, efficiency of data compression, and/or efficiency of data deduplication. 
     In some embodiments, new data protection system  112  may not be used as a fully functional data protection system, but may instead be used as a simulator. For example, new data protection system  112  may simulate the operation of a data protection system and repository without actually performing the tasks. Reports may thereafter be generated from the results of the simulation. Operating a simulator may be preferable, for example, if compute and/or memory resources are limited. Once the reports are generated, they may be used to convince a consumer that the costs of updating to the actual functioning data protection system are justified. 
     Data protection system  112  may also store the data received at repository  110  using its own data format along side the data format from legacy data protection system  104 . In an embodiment, this may involve performing data compression and/or deduplication on the data as it arrives at repository  110 . This may be particularly beneficial for generating reports since real-world differences between the two systems may be compared. For example, the data compression and/or deduplication differences between legacy data protection system  104  and data protection system  112  may be determined by comparing repository sizes. If one backup repository is smaller than the other backup repository, then the data protection system associated with the smaller backup repository may be preferable over the other data protection system. Storing the data using data protection system  112 &#39;s format may also help convince a consumer that the migration is safe. Since the data may already be stored in data protection system  112 &#39;s format, compatibility issues are no longer a problem. 
     In some embodiments, data protection system  112  may require specific agents, modules, applications, processes, probes, or daemons (collectively, “agents”) to execute on client  100 . These agents may communicate with data protection system  112  from the client and help coordinate the data protection process. Even in embodiments where these agents are not required, it may still be beneficial to install them on client  100 . The agents could, for example, improve backup performance by providing client-side data deduplication. 
     Repository  110 , data protection system  112 , and/or some other computer process operating on repository  110  may install these agents on clients  100 . In an embodiment, when repository  110  connects to a network it may push the agent to all of the clients in the environment, such as client  100 . The agents may be configured to automatically install themselves on the client machine and communicate with data protection system  112 . In an embodiment, this “push-install” may be similar to a computer virus spreading through a system. Additionally or alternatively, instructions may be transmitted to the clients to download the agent from an external source, such as a vendor website. The user and/or consumer IT department may also unilaterally install the agents on client devices. 
     In an embodiment, data protection system  112  may replicate itself through the consumers&#39; system in a manner similar to the client agents. This may, for example, prevent data protection system  112  from consuming an inappropriate amount of resources on repository  110 . Data protection system  112  may be assigned a resource threshold, and when that threshold is reached and/or exceeded the data protection system may discover and allocate additional resources to accommodate the additional workload. This threshold may exist, for example, because data protection system resides on a production repository and is not itself the primary data protection system (i.e. is not legacy data protection system  104 ). It may therefore by inefficient, inconvenient, and inappropriate for data protection system  112  to consume a large amount of resources. The threshold may comprise, for example, processing power, memory consumption, number of connections to data protection system  112 , and/or network latency, among others. Once the threshold is exceeded, however, data protection system may replicate itself to other servers in the system. This replication process allows the data protection manager to operate in parallel on multiple servers in the system. 
     When data protection system  112  exceeds a threshold, it may attempt to discover additional servers in the system with available resources. These servers may be, for example, additional servers  108 . Once a viable server is discovered, data protection system  112  may be replicated to that server and a new, server-specific threshold established. Additionally or alternatively, the old threshold may be reused. Data protection system  112  may operate on the new server until the threshold is again reached, at which point it may attempt to discover more servers and replicate itself again. This allows data protection system  112  to operate on multiple servers in the consumer environment, without consuming an inappropriate amount of resources. 
     In some embodiments, the propagation may occur only with a system administrator&#39;s consent. The administrator may grant the data protection system permission to virally install itself on servers in the environment. In some embodiments, the automatic deployment may be limited based on a policy. For example, the system administrator may define the maximum number of servers permitted to host the manager, and/or the maximum number of resources that may be consumed by that server. 
     While reference is made herein to data protection and/or backup services, virally replicating any type of service through an environment may be consistent with the present disclosure. For example, a web service application may be distributed through an environment when a number of connections is exceeded. Similarly, when a database is reaching full capacity it may discover additional locations with available storage space and virally deploy the required services to those locations. In some embodiments, any time a capacity to accomplish a service exceeds a threshold, regardless of what that service may be, additional resources may be discovered and allocated to the service. This may be based on a policy and at the consent of the system administrator. 
       FIG. 2  depicts an additional architecture for replicating data protection system  112  through a consumer system. In an embodiment, data protection system  112  may be immediately distributed to an available server, such as server  200 , when repository  110  connects to the network. Alternatively, data protection system  112  may only be distributed after a threshold is met or exceeded. When it is ready to propagate again, data protection system  112  may replicate itself to computer servers  202  which may form child nodes to computer server  200 . Similarly, when individual servers  202  exceed a threshold, data protection manager  112  may replicate itself to child nodes  204  and/or  206 . This may form a tree structure with repository  110  and/or server  200  as the root node. 
     Having an individual server, such as repository  110  and/or server  200 , serve as a root node may assist with system communications. A deployment status may be determined by communicating directly with the root node rather than all the individual servers in the system. Similarly, reports may be generated directly from the root node, which may communicate with the child nodes to retrieve the relevant information. Additionally, the tree structure allows the data protection system to be distributed to multiple locations in parallel. For example, nodes  202  may distribute the system to their respective children at the same time. 
     The tree structure may allow the additional workload to be performed in a coordinated fashion. Data protection tasks may distributed among the children nodes, and the results may be communicated to the parent node. Additionally or alternatively, the children nodes may each process the additional workload independently without communicating with each other. 
     In some embodiments, the tree structure depicted in  FIG. 2  may dynamically grow or shrink based on need. For example, as the workload grows new compute resources may be needed. Adding more child nodes to the tree may allocate these new resources. If the workload starts to decrease, however, nodes may be removed from the tree. In an embodiment the nodes removed are leaf nodes. This allows the data protection system to dynamically expand and/or contract based on need. 
     Turning back to  FIG. 1 , the process described may result in a fully functioning data protection solution that is unique and independent from legacy system  104 . Even if data protection system  112  only comprises a simulation, reports may be provided to the consumer and used to justify the expense to enable the functional data protection application. If the consumer determines that the new data protection system meets their needs and/or exceeds the capabilities of the legacy system, they may simply “turn off” the legacy system and start using the new data protection system  112 . If the data was backed-up in parallel using data protection system  112 &#39;s format, no further action may be required. The system is already installed on all the necessary machines and operating as expected. In other words, the consumer passively migrated to a new data protection system simply by installing a new backup repository and disabling the legacy backup system. 
     In some embodiments, the migration process may enable new data protection system  112  to access backups taken by legacy data protection system  104 . Each of these data protection systems may maintain catalogs inventorying backups they have taken. Prior to shutting down legacy data protection system  104 , new data protection system  112  may import the legacy data protection catalog into its own catalog. Should it become necessary to access a backup taken by legacy data protection system  104 , the catalog stored in data protection  112  may be queried and the backup located. If data protection system  112  can process the legacy backup format, it may access and/or restore the backup. If data protection system  112  cannot process the backup format, legacy data protection system  104  may be re-enabled to access and/or restore the backup. 
     Turning now to  FIG. 3 , a method for passively migrating to a new data protection system is discussed. At block  300 , a data repository comprising a processor, memory, and/or computer readable storage medium is connected to a network. This may involve physically connecting the repository to the system, such as by plugging in a network cable, or electronically connecting the repository, such as by enabling software drivers associated with the physical network card. In some embodiments, the repository may be substantially similar to repository  110  and the network may be similar to network  102 . 
     At  302 , the data repository may attempt to discover a first computer server connected to the network. The repository could, for example, discover computing devices on the network and determine the operating environment on each. In an embodiment, the first computer server may be similar to additional computer servers  108  and/or computer server  200 . 
     At block  304 , a data protection service may be distributed from the data repository to the first computer server. The data protection service could be, for example, data protection system  112 . 
     At  306 , a second computer server may be discovered from the first computer server. Additionally or alternatively, the second computer server may be discovered from repository  110 . The second computer server could be, for example, additional computer servers  108  and/or computer servers  202 . 
     At  308 , the data protection service may be transmitted a second time from the first computer server to the second computer server. This transmission could be, for example, in response to a threshold being exceeded on the first server. 
     At  310 , a client device may be discovered on the network. This discovery process may be substantially similar to the computer server discovery process. In an embodiment, the discovery may occur at periodic intervals as new client devices may occasionally be added to the network. 
     At  312 , a data protection agent may be distributed from the first computer server and/or data repository to the client device. This agent may, for example, be configured to manage the backup process from the client. In an embodiment, the client agent may make and/or maintain connections to the data protection service. 
     Finally, at block  314 , a legacy data protection system may be disabled in response to a successful data protection service and/or client agent deployment. This legacy backup service may be, for example, legacy data protection service  104 . 
       FIG. 4  depicts a computer system consistent with an embodiment of the present disclosure. General purpose computer  400  may include processor  402 , memory  404 , and system IO controller  406 , all of which may be in communication over system bus  408 . In an embodiment, processor  402  may be a central processing unit (“CPU”) or accelerated processing unit (“APU”). Some embodiments may comprise multiple processors, or a processor with multiple cores. Processor  402  and memory  404  may together execute a computer process, such as the processes described herein, using input received from  10  controller  406 . 
     System IO controller  406  may be in communication with display  410 , input device  412 , non-transitory computer readable storage medium  414 , and/or network  416 . Display  410  may be any computer display, such as a monitor, a smart phone screen, or wearable electronics and/or it may be an input device such as a touch screen. Input device  412  may be a keyboard, mouse, track-pad, camera, microphone, or the like, and storage medium  414  may comprise a hard drive, flash drive, solid state drive, magnetic tape, magnetic disk, optical disk, or any other computer readable and/or writable medium. Storage device  414  may also reside inside general purpose computer  400 , rather than outside as shown in  FIG. 4 . 
     General purpose computer  400  could be, for example, client  100 , computer server  106 , repository  110 , additional computer servers  108 , and/or computer servers  200 ,  202 ,  204 , and/or  206 . 
     Network  416  may be any computer network, such as a local area network (“LAN”), wide area network (“WAN”) such as the internet, a corporate intranet, a metropolitan area network (“MAN”), a storage area network (“SAN”), a cellular network, a personal area network (PAN), or any combination thereof. Further, network  416  may be either wired or wireless or any combination thereof, and may provide input to or receive output from IO controller  406 . In an embodiment, network  416  may be in communication with one or more network connected devices  418 , such as another general purpose computer, smart phone, PDA, storage device, tablet computer, or any other device capable of connecting to a network. In an embodiment, network  116  may be substantially similar to network  102 . 
     For the sake of clarity, the processes and methods herein have been illustrated with a specific flow, but it should be understood that other sequences may be possible and that some may be performed in parallel, without departing from the spirit of the invention. Additionally, steps may be subdivided or combined. As disclosed herein, software written in accordance with the present invention may be stored in some form of computer-readable medium, such as memory or CD-ROM, or transmitted over a network, and executed by a processor. 
     All references cited herein are intended to be incorporated by reference. Although the present invention has been described above in terms of specific embodiments, it is anticipated that alterations and modifications to this invention will no doubt become apparent to those skilled in the art and may be practiced within the scope and equivalents of the appended claims. More than one computer may be used, such as by using multiple computers in a parallel or load-sharing arrangement or distributing tasks across multiple computers such that, as a whole, they perform the functions of the components identified herein; i.e. they take the place of a single computer. Various functions described above may be performed by a single process or groups of processes, on a single computer or distributed over several computers. Processes may invoke other processes to handle certain tasks. A single storage device may be used, or several may be used to take the place of a single storage device. The disclosed embodiments are illustrative and not restrictive, and the invention is not to be limited to the details given herein. There are many alternative ways of implementing the invention. It is therefore intended that the disclosure and following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the invention.