Virtual machine backup and restore coordinator

A backup and restore coordinator configured to receive a plurality of backup and restore requests from at least two uncoordinated backup functionalities implemented in a virtual environment, the virtual environment including a hypervisor hosting a plurality of virtual machines and a backup server. The backup and restore coordinator configured to extract respective information from the plurality of backup and restore requests including target data, backup resource information, and a type of request. The backup and restore coordinator configured to order the plurality of backup and restore requests in a prioritized queue based on the information extracted from the plurality of backup and restore requests.

BACKGROUND

The present disclosure relates to virtual machines, and, more specifically, to data backups and/or restores in virtual environments.

Virtualization collects a shared pool of distributed resources and dynamically supplies portions of the shared pool of distributed resources to multiple clients on an as-needed basis. Historically, computational inefficiencies occur when a single entity acquires physical computational resources necessary to meet its maximum computational load. Since most entities have cyclical computing needs (e.g., predictable fluctuations throughout the day, month, quarter, year, etc.) that also change over time (e.g., an increasing percentage of business processes are being digitized over time), procuring physical computational resources necessary to meet the entity's maximum computational requirements causes inefficiencies during the off-cycle (e.g., excess capacity when less than the maximum computational load is required), and the physical computational resources become outdated relatively quickly. In light of this challenge, virtualization provides efficiency gains by supplying virtualized resources to entities on an as-needed basis.

With the increasing amount of virtualized computing, there is also an increasing need to backup and/or restore virtual machines (VMs) on a regular, intermittent, or as-needed basis in order to provide redundancy in the event of service interruptions, power outages, hardware malfunctions, inadvertent deletions, and so on. Several backup techniques for VMs are currently in existence.

A first backup technique is initiated by a backup server. A backup server scheduler incorporated into the backup server collects statistical information about the server environment and triggers a VM to initiate a backup when the backup server is below a predefined level of utilization. Disadvantageously, this first technique schedules backups exclusively based on the resource utilization of the backup server and disregards the resource utilization of the various VMs.

A second backup technique is initiated by an in-guest backup client associated with a virtual machine. According to the second technique, the in-guest backup client initiates backups according to a manual schedule. Disadvantageously, this second technique is unaware of resource utilization at the backup server and is also unaware of backup processes being executed by other VMs in the virtual environment. Both of these factors contribute to a high likelihood of conflicts when multiple VMs attempt to perform backup operations at the same time and overload the backup server.

A third technique is initiated by a proxy backup client that interfaces directly with the hypervisor and triggers backup operations of the virtualized environment according to a manually developed schedule. Disadvantageously, this third technique performs inflexible backup operations according to a manual schedule.

Thus, two technical challenges associated with performing backups in virtual environments are: 1) configuring backups at times beneficial to (or at least not detrimental to) both the VM and the backup server, and 2) reducing conflicts, collisions, and duplications realized when multiple types of backup solutions are implemented in the same virtual environment.

SUMMARY

Aspects of the present disclosure are directed toward a computer-implemented method comprising receiving, at a backup and restore coordinator, a plurality of backup and restore requests from at least two uncoordinated backup functionalities implemented in a virtual environment, the virtual environment including a hypervisor hosting a plurality of virtual machines and a backup server. The method further comprising extracting, by the backup and restore coordinator and from respective requests of the plurality of backup and restore requests, respective information including target data, backup resource information, and a type of request. The method further comprising ordering the plurality of backup and restore requests in a prioritized queue of the backup and restore coordinator based on the information extracted from the plurality of backup and restore requests.

Advantageously, the method discussed above reduces conflicts between two or more uncoordinated backup functionalities implemented in a virtual environment by ordering backup and restore requests received from the uncoordinated backup functionalities in the prioritized queue.

Other aspects of the present disclosure consistent with the method described above further include a first request of the plurality of backup and restore requests being prioritized over a second request in response to determining that the first request is a restore request and that the second request is a backup request.

Advantageously, this embodiment of the present disclosure prioritizes restore requests over backup requests, even when a backup request and restore request are generated by different uncoordinated backup functionalities. Prioritizing restore requests over backup requests can improve functionality by completing a time-sensitive restore request as soon as possible and deferring a less time-sensitive backup request.

Other aspects of the present disclosure consistent with the method described above further include at least a portion of the plurality of backup and restore requests being received at the backup and restore coordinator from a monitoring client implemented by the backup and restore coordinator, where the monitoring client is associated with a backup client of a virtual machine of the plurality of virtual machines.

Advantageously, these embodiments utilize a monitoring client to monitor backup clients associated with individual virtual machines hosted by a hypervisor. Monitoring individual backup clients enables the backup and restore coordinator to identify and record backup operations that are not initiated by the hypervisor or the backup server.

Other aspects of the present disclosure consistent with the method described above further include removing duplicate requests, where duplicate requests include at least two backup requests received from different uncoordinated backup functionalities and attempting to back up a same set of data, or at least two restore requests received from different uncoordinated backup functionalities and attempting to restore a same set of data.

Advantageously, removing duplicate requests initiated by different uncoordinated backup functionalities improves efficiency by reducing the number of times different data is backed up or restored in the virtual environment.

Further aspects of the present disclosure are directed to a system comprising a hypervisor, a plurality of virtual machines (VMs) hosted by the hypervisor, a backup server communicatively coupled to the hypervisor, at least two uncoordinated backup functionalities configured to provide redundancy to the plurality of virtual machines using the backup server, and a backup and restore coordinator communicatively coupled to the hypervisor. The backup and restore coordinator comprises a prioritized queue that orders a plurality of backup and restore requests received from the at least two uncoordinated backup functionalities.

Advantageously, the system discussed above reduces conflicts between two or more uncoordinated backup functionalities implemented in a virtual environment by ordering backup and restore requests received from the uncoordinated backup functionalities in the prioritized queue.

Further aspects of the present disclosure are directed toward a backup and restore coordinator comprising a communication interface for communicating with a hypervisor and a plurality of monitoring clients respectively coupled to a plurality of virtual machines hosted by the hypervisor in a virtual environment. The backup and restore coordinator further comprises a profiles database storing backup preferences of the plurality of virtual machines. The backup and restore coordinator further comprises a settings database storing administrative settings regarding types of backups for respective virtual machines, auto-registration settings for respective virtual machines, and a prioritization scheme. The backup and restore coordinator further comprises a backup and restore database storing historical and ongoing requests for backups and restores received from at least two uncoordinated backup functionalities implemented in the virtual environment. The backup and restore coordinator further comprises a prioritized queue of backups and restores for the plurality of virtual machines, where the prioritized queue orders a plurality of backup and restore requests based on information in the profiles database, settings database, and backup and restore database. The backup and restore coordinator being configured to implement backups and restores in the virtual environment according to the prioritized queue.

Advantageously, the backup and restore coordinator discussed above reduces conflicts between two or more uncoordinated backup functionalities implemented in a virtual environment by ordering backup and restore requests received from the uncoordinated backup functionalities in the prioritized queue.

The present summary is not intended to illustrate each aspect of, every implementation of, and/or every embodiment of the present disclosure.

DETAILED DESCRIPTION

Aspects of the present disclosure are directed toward virtual machines, and, more specifically, to coordinating backups and/or restores amongst multiple backup systems in a virtual environment. While not limited to such applications, embodiments of the present disclosure may be better understood in light of the aforementioned context.

Backup and/or restore functionality can be provided by multiple components of a virtual environment. For example, backup and/or restore functionality can be provided as a component of a virtual machine (e.g., a backup client), as a component of a hypervisor (e.g., a proxy backup client), as a component of a backup system (e.g., a backup server scheduler), and so on. While these backup and/or restore functionalities are not necessarily mutually exclusive (e.g., the presence of one in a virtual environment does not necessarily exclude the proper functioning of another), the implementation of multiple backup and/or restore functionalities in a virtual environment can lead to conflicts, collisions, duplications, and/or other inefficiencies. For example, a backup client does not necessarily interface with a proxy backup client or a backup server scheduler when initiating backups for the virtual machine of the backup client. As a result of this lack of coordination between multiple backup functionalities in a virtual environment, there is an increased risk of conflicts (e.g., two backup requests executed on the same portion of a backup server at a same time), increased risk of duplication (e.g., two different backup functionalities each backing up the same virtual machine information), and/or increased risk of service disruptions (e.g., an urgent restore request delayed while a full backup occurs, degraded functionality at a VM when a backup of the VM is initiated by a backup server at a time when the VM is experiencing a high utilization load, etc.).

Consequently, there is a need for coordination amongst multiple backup and/or restore functionalities in a virtual environment. Aspects of the present disclosure provide this solution in the form of a backup and restore coordinator. The backup and restore coordinator can be configured to interface with a hypervisor hosting numerous virtual machines in a virtual environment having at least two uncoordinated backup functionalities. The backup and restore coordinator can receive backup and restore requests from the at least two uncoordinated backup functionalities and efficiently order the received requests in a queue. The backup and restore coordinator can then cause the backup and restore requests to be implemented in accordance with the order established in the queue.

Aspects of the present disclosure exhibit numerous advantages including, but not limited to, providing coordination amongst multiple backup functionalities implemented in a virtual environment. Coordinating multiple backup functionalities in a virtual environment reduces conflicts and increases efficiency.

Second, aspects of the present disclosure exhibit high usability by prioritizing restore requests over backup requests. Prioritizing restore requests enables prompt regeneration of lost or otherwise corrupted data.

Third, aspects of the present disclosure use monitoring clients to monitor virtual machine backup clients. Monitoring virtual machine backup clients using the monitoring clients enables the backup and restore coordinator to intercept backup and restore requests generated by the backup clients, thereby contributing to reduced conflicts and increased efficiency.

Fourth, aspects of the present disclosure are configurable and customizable. As one example, aspects of the present disclosure account for virtual machine backup preferences when ordering the prioritized queue (e.g., a preferred backup time, a preferred backup frequency, etc.). As another example, aspects of the present disclosure account for administrative preferences when ordering the prioritized queue (e.g., performing auto-registration, defining a type of backup, etc.). Thus, aspects of the present disclosure deliver flexible and customizable solutions depending on the requirements of different virtual environments.

Fifth, aspects of the present disclosure can be provisioned on an as-needed basis in a virtual environment. Thus, the backup and restore coordinator can be created on top of, beside of, or within the hypervisor using the same pool of resources used by the hypervisor.

The non-limiting list of advantages discussed above, and elaborated upon hereafter, are example advantages, and embodiments of the present disclosure can exist that realize all, some, or none of the advantages discussed herein while remaining within the spirit and scope of the present disclosure.

FIG.1illustrates a block diagram of an example virtual environment100having network resources102and hardware resources104distributed by a hypervisor106to multiple virtual machines (VMs)108A,108B,108C, and108D (generically referred to as VM108).

Network resources102can include, but are not limited to, external network virtualization (e.g., combining multiple networks, or portions thereof, into a virtual network unit) or internal virtualization (e.g., providing network-like functionality to software containers on a single network server). Network resources102can include network hardware (e.g., switches, network adapters, network interface cards (NICs), etc.), network elements (e.g., firewalls, load balancers, etc.), networks (e.g., virtual local area networks), network storage devices, and so on.

Hardware resources104includes hardware resources necessary to retrieve, read, compile, execute, process, store, and/or output computer data. Hardware resources104can include, for example, disk, storage, memory, and/or other resources that may be necessary to properly implement a VM108.

Each of the VMs108can include a backup client110A-110D (generically referred to as backup client110). Backup clients110can provide individualized backup functionality to each VM108. Backup clients110can be configured to initiate backups according to a predefined schedule or at times when the respective VM108is experiencing relatively low load utilization and can implement a backup process with little or no performance degradation.

Virtual environment100further includes a proxy backup client114interfacing with the hypervisor106and providing backup functionality for all VMs108associated with hypervisor106according to a predefined schedule.

Virtual environment100further includes a backup server116interfacing with the hypervisor106via the network resources102. Backup server116includes a backup server scheduler118configured to backup VMs108associated with hypervisor106according to the resource utilization of backup server116and its associated backup server storage resource120. Backup server storage resource120can be one or more of tape archives, disk storage, and/or other storage that is separated (e.g., geographically separated, virtually isolated, etc.) from VMs108.

Thus, virtual environment100includes three example uncoordinated backup solutions128(e.g., backup clients110associated with individual VMs108, proxy backup client114associated with hypervisor106, and backup server scheduler118associated with backup server116). In many virtual environments, at least two of these backup functionalities are present. In such situations, the lack of coordination between multiple backup functionalities can result in conflicts (e.g., multiple simultaneous backup requests), inconsistencies (e.g., separate backups made of the same VM108in separate locations), and/or inefficiencies (e.g., backups executed at times inconvenient to the VMs108and/or the backup server116).

As used herein, uncoordinated backup functionalities128can refer to backup functionalities that operate without communicating with one another. Uncoordinated backup functionalities128can generally be defined as two or more backup and/or restore functionalities that: 1) operate using different technologies and/or different strategies from a same or different vendor (e.g., backup client110performs backups using different techniques compared to proxy backup client114), 2) operate using similar technologies from different vendors (e.g., backup client110A can be provided from a first vendor and backup client110B can be provided by a second vendor, causing backup clients110A and110B to be uncoordinated), and/or 3) operate without coordination even in situations where the backup functionalities operate using similar technology and are from a same vendor (e.g., backup clients110A,110B may be from a same vendor, but are not configured to communicate with one another and are thus uncoordinated).

Advantageously, the present disclosure provides a backup and restore coordinator122for coordinating backup and restore requests amongst multiple uncoordinated backup functionalities128in virtual environment100.

Backup and restore coordinator122interfaces with the hypervisor106. Furthermore, backup and restore coordinator122establishes monitoring clients112A-112D (generically referred to as monitoring client112, and while the arrow shows a connection specifically between backup and restore coordinator122and monitoring client112A, this is representative and not limiting) for each of the VMs108associated with hypervisor106. Monitoring clients112A-112D can intercept backup request initiated by backup clients110and transmit the intercepted backup requests to backup and restore coordinator122. In some embodiments, monitoring clients112collect information from corresponding VMs108such as resource utilization to further facilitate efficient backups.

Backup and restore coordinator122includes a plurality of backup and restore requests124. Backup and restore requests124can be received via the hypervisor106from monitoring clients112, proxy backup client114, backup server scheduler118, and/or any of the VMs108. In some embodiments, the backup and restore coordinator122extracts information from the plurality of backup and restore requests124such as, but not limited to, VM108information (e.g., target data), backup server information (e.g., storage location), a type of request (e.g., a type of backup or restore request), and a requested time (e.g., start time or finish time).

Backup and restore coordinator122further includes queue126. Queue126orders the plurality of backup and restore requests124in an order that reduces conflicts, increases efficiency, prioritizes urgent requests over less urgent requests, and/or other considerations that generally improve the performance, functionality, efficiency, and/or usability of the virtual environment100.

As will be discussed in more detail hereafter, backup and restore coordinator122is configured to store information related to the plurality of backup and restore requests124in a table with an entry for each VM108hosted by hypervisor106. When an uncoordinated backup functionality128requests a backup of a VM108(e.g., from backup client110, proxy backup client114, and/or backup server scheduler118), the backup and restore coordinator122performs a lookup in the table to determine if another backup is already running. If not, then the backup and restore coordinator122can write the start time of the requested backup into the table as the current time and can provide the requesting backup functionality with a token enabling the uncoordinated backup functionality128to take a snapshot of the VM108to be backed up and initiate the backup process. The uncoordinated backup functionality128can communicate a predicted time to finish the backup to the backup and restore coordinator122, and the backup and restore coordinator122can store the predicted finish time in the table in order to properly schedule any future backup requests. If another backup is running, the backup and restore coordinator122can delay (e.g., pause, queue, cancel, etc.) the request until the backup is finished and provide a predicted time that the ongoing backup will finish to the requesting backup functionality.

Although backup and restore coordinator122is shown alongside hypervisor106, backup and restore coordinator122can be configured to be next to, on top of, or incorporated within hypervisor106according to various embodiments.

FIG.1is illustrated for ease of discussion and is not to be taken in a limiting sense. Each embodiment of the present disclosure does not necessarily require each component discussed inFIG.1. Likewise, embodiments of the present disclosure can exist that include more or fewer components than those components illustrated inFIG.1. Furthermore, the configuration of the components inFIG.1is not limiting, and embodiments exist that include similar or dissimilar components arranged in similar or alternative configurations than the configuration shown.

Referring now toFIG.2, illustrated is a block diagram of an example backup and restore coordinator122, in accordance with embodiments of the present disclosure. Backup and restore coordinator122includes a VM profile subsystem202that creates a profile for each VM108that is managed by the backup and restore coordinator122. VM profile subsystem202manages create, read, update, and delete (CRUD) operations on the VM profiles. Although CRUD operations were previously discussed, other sets of operations such as 1) browse, read, edit, add, delete, or 2) delete, add, view, edit, or 3) create, replicate, append, process also fall within the spirit and scope of the present disclosure. VM profile subsystem202includes a VM profile database204storing the backup preferences of the VM profiles associated with VM profile subsystem202. Backup preferences can include, but are not limited to, backup times, backup frequencies, backup types, and/or other preferences.

Backup and restore coordinator122further includes an administrative subsystem206that manages an administrator-facing interface allowing administrators to connect to the backup and restore coordinator122and set preferred settings (e.g., backup frequency, backup times, dynamic backup thresholds, backup types, auto-registration of VMs for backup services, backup prioritization, authorities such as pause, stop, resume, and others that are associated with backups, and so on). Examples of backup frequencies are hourly, daily, weekly, monthly, and so on. Examples of backup times are between 7:00 PM and 5:00 AM, between 11:00 PM and 11:59 PM, and so on. Examples of dynamic backup thresholds are initiating a backup when a VM108experiences a resource utilization below 20%, initiating a backup within 24 hours of a VM108experiencing a resource utilization above 90%, and so on. Examples of backup types include incremental backups, differential backups, full backups, backups of only files and folders, backups of only full virtual machine disk (VMDK), and so on.

Administrative subsystem206is communicatively coupled to a settings database208storing the settings configured by administrators interacting with administrative subsystem206.

Backup and restore coordinator122further includes configuration management database (CMDB)210for storing information about VMs108registered with backup and restore coordinator122. CMDB210can store information including, but not limited to, statuses of various VMs108(e.g., development (DEV), production (PROD), etc.), recovery point objectives (RPO) of VMs108, recovery time objectives (RTO) of VMs108, and other information that is useful for properly prioritizing backup and/or restore requests of various VMs108.

Backup and restore coordinator122further includes backup and restore requests subsystem212for managing all requests to perform backups and/or restores received from VMs108or other uncoordinated backup functionalities128running in the virtual environment100contemporaneously with backup and restore coordinator122. Backup and restore requests subsystem212includes a backup and restore database214storing the plurality of backup and restore requests124received at the backup and restore coordinator122. In some embodiments, the backup and restore database122stores extracted details from the plurality of backup and restore requests124such as, but not limited to, requesting entity (e.g., VM108, backup client110, proxy backup client114, backup server scheduler118, etc.), target data (e.g., the information to be backed up or restored), backup server details (e.g., ID of the backup server, address of the backup server, type of backup server, etc.), a requested start time, a predicted end time, and so on. In some embodiments, backup and restore database214includes at least one instance for each VM108hosted by hypervisor106in virtual environment100.

Backup and restore coordinator122further includes backup solutions subsystem216for registering new backup solutions and new backup servers for each solution (e.g., Tivoli Storage Manager (TSM), Spectrum Protect for Virtual Environments (SP4VE), TSM add-on for databases, Veeam, Veritas NetBackup, etc.). Backup solutions subsystem216is further configured to perform CRUD operations on the profiles of the backup solutions. Backup solutions subsystem216includes a solutions database218storing the backup settings of each backup solution generated by backup solutions subsystem216.

Backup and restore coordinator122further includes queue126. Queue126can order, prioritize, and/or otherwise organize the plurality of backup and restore requests124received from two or more uncoordinated backup functionalities128in a virtual environment100. In various embodiments, queue126organizes the plurality of backup and restore requests124based on one or more of the profile database204(e.g., VM108preferences), the settings database208(e.g., administrator settings), the CMDB210(e.g., statuses, RPOs, RTOs, etc.), the backup and restore database214(e.g., a listing of historical, ongoing, and pending requests), and/or solutions database218(e.g., vendor-specific protocols, preferences, and/or other data).

Backup and restore coordinator122further includes a communication interface220for managing communication between backup and restore coordinator122and a virtual environment100. Communication interface220can, in some embodiments, communicate directly with a hypervisor106and/or one or more monitoring clients112. Communication interface220manages authentication functions, security functions, and/or dispatching functions as backup and restore coordinator122interacts with other components in a virtual environment100.

FIG.2is illustrated for ease of discussion and is not to be taken in a limiting sense. Each embodiment of the present disclosure does not necessarily require each component discussed inFIG.2. Likewise, embodiments of the present disclosure can exist that include more or fewer components than those components illustrated inFIG.2. Furthermore, the configuration of the components inFIG.2is not limiting, and embodiments exist that include similar or dissimilar components arranged in similar or alternative configurations than the configuration shown.

Referring now toFIG.3, illustrated is a flowchart of an example method300for managing uncoordinated backup functionalities128in a virtual environment100using a backup and restore coordinator122, in accordance with embodiments of the present disclosure. In various embodiments, the method300is implemented by a processor executing computer-readable program instructions (e.g., computer system600ofFIG.6), by a backup and restore coordinator122, or by a different configuration of hardware and/or software.

Operation302includes receiving, at a backup and restore coordinator122, a plurality of backup and restore requests124from at least two uncoordinated backup functionalities128implemented in a virtual environment100. The virtual environment100can include a hypervisor106hosting a plurality of virtual machines108and a backup server116configured to provide redundancy for the plurality of virtual machines108. In some embodiments, at least a portion of the plurality of backup and restore requests124are received from monitoring clients112.

Operation304includes extracting, by the backup and restore coordinator122and from respective requests of the plurality of backup and restore requests124, respective information such as, but not limited to, target data information (e.g., a VM108to be backed up or restored), backup server information (e.g., a volume, disk, tape, partition, segment, or other identifying aspect of the backup server being used in the backup or restore request), a type of request (e.g., backup, restore, incremental, differential, full, etc.), a requested start time, and/or a predicted amount of time required to perform the requested operation (or a predicted end time).

Operation306includes ordering, by the backup and restore coordinator122, the plurality of backup and restore requests124in a queue126of the backup and restore coordinator122based on the information extracted from the plurality of backup and restore requests124. In some embodiments, the queue126is further based on information stored in one or more of the profile database204, the settings database208, the CMDB210, the backup and restore database214, and/or the solutions database218. The backup and restore coordinator122is configured to implement the plurality of backup and restore requests124in the virtual environment100according to the queue126. Advantageously, the queue126reduces conflicts between at least two uncoordinated backup functionalities128and improves the efficiency of backup and restore operations implemented in the virtual environment100.

In some embodiments, operation306includes removing duplicate requests, where the duplicate requests include 1) two or more backup requests attempting to back up a same set of data, and/or 2) two or more restore requests attempting to restore a same set of data. Advantageously, removing duplicate requests increases efficiency by avoiding duplicative processing efforts between multiple uncoordinated backup functionalities128.

The aforementioned operations can be completed in orders other than the order shown, and some operations can be completed in parallel with other operations. Additionally, embodiments exist including all, some, or none of the aforementioned operations while remaining within the spirit and scope of the present disclosure.

Referring now toFIG.4, illustrated is a flowchart of an example method400for managing backup requests in a virtual environment100, in accordance with embodiments of the present disclosure. In various embodiments, the method400is implemented by a processor executing computer-readable program instructions (e.g., computer system600ofFIG.6), by a backup and restore coordinator122, or by a different configuration of hardware and/or software.

Operation402includes receiving, by a backup and restore coordinator122, a backup request from a hypervisor106. The backup request can be initiated by, for example, a proxy backup client114, a backup server scheduler118, a VM108, or a different entity.

Operation404includes extracting, by the backup and restore coordinator122, information from the received request. The information can include, but is not limited to, an identification of the target data to be backed up, an identification of a server or other storage unit that will store the target data, a type of backup, a starting time, and/or a predicted duration (or predicted end time).

Operation406includes extracting, by the backup and restore coordinator122, a list of backups and/or restores running on the same storage location as included in the request. The list of backups can be retrieved by, for example, querying the backup and restore database214.

Operation408includes determining, by the backup and restore coordinator122, if another backup is currently running based on the list of backups extracted in operation406. In the event that there is no other backup currently running on the backup server (e.g., NO at operation408), the method400proceeds to operation418and updates the backup and restore database214to indicate the backup request received in operation402is now a running backup. The method400then proceeds to operation420and authorizes the backup request. The backup request can be authorized by providing a token to the requesting backup functionality that enables the requesting backup functionality to take a snapshot of the target data (e.g., VM108) that it is backing up and start the backup process.

Returning again to operation408, in the event the backup and restore coordinator122determines that another backup is running (e.g., YES at operation408), then the backup and restore coordinator122continues to operation410and determines if the backup requested in operation402and the backup currently running are mutually exclusive (e.g., mutually exclusive can mean that both backup operations are writing to the same backup server, disk, tape, or storage partition, or that both backup operations are backing up at least some of the same data).

If the running backup operation and the requested backup operation are not mutually exclusive (e.g., NO at operation410, in other words the running backup operation and the requested backup operation are directed to non-overlapping backup resources), then the backup and restore coordinator122proceeds to operation418and updates the backup and restore database214and then continues to operation420and authorizes the backup request.

Returning again to operation410, if the running backup operation and the requested backup operation are mutually exclusive (e.g., YES at operation410), then the backup and restore coordinator122proceeds to operation412and pauses (e.g., delays) the requested backup. Pausing the requested backup can include, for example, placing the backup request in a queue126of pending requests, pausing for a predetermined amount of time and then returning to operation408, canceling the request in order to force the backup to be re-requested at a later time, or a different technique configured to delay the execution of the requested backup. In some embodiments, the requested backup is paused until the backup and restore coordinator122receives an indication that the other backup is completed.

Referring now to operation414, operation414indicates a second entrance point for aspects of the method400. Operation414includes receiving, at the backup and restore coordinator122, backup start and finish information from a monitoring client112interfacing with a backup client110on a VM108associated with the hypervisor106. The monitoring client112can identify a backup based on monitoring the backup client110, monitoring server logs, monitoring backup logs, or other techniques. The monitoring client112can transmit such information to backup and restore coordinator122as shown in operation414.

Operation416includes extracting, by the backup and restore coordinator122, information from the request received in operation414. Operation416can be consistent with operation404.

Operation418includes updating the backup and restore database214with the information extracted in operation416. The backup and restore coordinator122then authorizes the backup request in operation420.

As can be seen, in some embodiments, backups initiated by backup clients110on VMs108may not be able to be stopped, and thus, the backup and restore coordinator122automatically authorizes the backup and records the backup information in the backup and restore database214as shown in operations414-420.

The aforementioned operations can be completed in orders other than the order shown, and some operations can be completed in parallel with other operations. Additionally, embodiments exist including all, some, or none of the aforementioned operations while remaining within the spirit and scope of the present disclosure.

Referring now toFIG.5, illustrated is a flowchart of an example method500for resolving conflicts between backup requests and restore requests using a backup and restore coordinator122, in accordance with embodiments of the present disclosure. In various embodiments, the method500is implemented by a processor executing computer-readable program instructions (e.g., computer system600ofFIG.6), by a backup and restore coordinator122, or by a different configuration of hardware and/or software.

Operation502includes receiving, at the backup and restore coordinator122, a restore request from a hypervisor106. The restore request can be initiated by a VM108, a proxy backup client114, a backup client110, a monitoring client112, a backup server116, or a different entity.

Operation504includes extracting, by the backup and restore coordinator122, information about the requested restore. The information can include, for example, a location of the data to be restored (e.g., a server name, location, and/or address), a type of restore, a starting time of the restore, and predicted duration of the restore, an urgency of the restore, and/or other information.

Operation506includes extracting, by the backup and restore coordinator122, a list of backups running on the server related to the restore request. The list of backups running on the server can be retrieved from the backup and restore database214.

Operation508includes determining, by the backup and restore coordinator122, if another backup is currently running based on the list of backups retrieved in operation506. In the event no other backups are running (e.g., NO at operation508), the backup and restore coordinator122proceeds to operation512and updates the backup and restore database214with information regarding the requested restore. The backup and restore coordinator122then proceeds to operation514and authorizes the restore request. In some embodiments, authorizing the restore request includes providing a token to the requesting entity so that the requesting entity can initiate the restore process.

Returning again to operation508, in the event there is another backup running (e.g., YES at operation508), the backup and restore coordinator122proceeds to operation510and determines if the backup is pausable (e.g., if the backup can or cannot be paused). Various backups can be paused without compromising data integrity, client performance, or contractual obligations, whereas other backups should not be paused in order to avoid data corruptions, service interruptions, contractual breaches, or other negative consequences. Various factors can indicate if a backup is pausable including settings configured in, for example, profile database204, settings database206, CMDB210, backup and restore database214, and/or solutions database218.

In the event that the currently running backup is not pausable (e.g., NO at operation510), the backup and restore coordinator122proceeds to operation516and pauses the requested restore until the backup finishes. Once the ongoing backup finishes, the method500proceeds to operation518and authorizes the restore request. In some embodiments, the restore is paused until a predicted end time of the backup, where the predicted end time is retrieved from backup and restore database214. In other embodiments, the restore is paused for a predetermined amount of time.

Returning again to operation510, in the event that the ongoing backup process is pausable (e.g., YES at operation510), then the backup and restore coordinator122proceeds to operation520and pauses the backup request and authorizes the restore request in operation522. Once the restore operation is completed, the backup and restore coordinator122proceeds to operation524and resumes the backup operation paused in operation520and upon completion of the restore authorized in operation522. Advantageously, operations520-524improve functionality in a virtual environment100by prioritizing restore requests over backup requests even when the backup requests have already been initiated, and even when the received restore request and the ongoing backup are initiated by different uncoordinated backup functionalities128.

The aforementioned operations can be completed in orders other than the order shown, and some operations can be completed in parallel with other operations. Additionally, embodiments exist including all, some, or none of the aforementioned operations while remaining within the spirit and scope of the present disclosure.

FIG.6illustrates a block diagram of an example computer system600in accordance with some embodiments of the present disclosure. In some embodiments, computer system600illustrates hardware functionality that may be physically or virtually utilized by backup and restore coordinator122. In various embodiments, computer system600can perform the methods described inFIGS.3-5and/or the functionality discussed inFIGS.1and2. In some embodiments, computer system600provides instructions for the aforementioned methods and/or functionalities to a client machine such that the client machine executes the method, or a portion of the method, based on the instructions provided by the computer system600. In some embodiments, computer system600comprises software executing on hardware incorporated into a plurality of devices.

The computer system600includes a memory625, storage630, an interconnect (e.g., BUS)620, one or more CPUs605(also referred to as processors605herein), an I/O device interface610, I/O devices612, and a network interface615.

Each CPU605retrieves and executes programming instructions stored in the memory625or storage630. The interconnect620is used to move data, such as programming instructions, between the CPUs605, I/O device interface610, storage630, network interface615, and memory625. The interconnect620can be implemented using one or more busses. The CPUs605can be a single CPU, multiple CPUs, or a single CPU having multiple processing cores in various embodiments. In some embodiments, a CPU605can be a digital signal processor (DSP). In some embodiments, CPU605includes one or more 3D integrated circuits (3DICs) (e.g., 3D wafer-level packaging (3DWLP), 3D interposer based integration, 3D stacked ICs (3D-SICs), monolithic 3D ICs, 3D heterogeneous integration, 3D system in package (3DSiP), and/or package on package (PoP) CPU configurations). Memory625is generally included to be representative of a random access memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), or Flash). The storage630is generally included to be representative of a non-volatile memory, such as a hard disk drive, solid state device (SSD), removable memory cards, optical storage, or flash memory devices. In an alternative embodiment, the storage630can be replaced by storage area-network (SAN) devices, the cloud, or other devices connected to the computer system600via the I/O device interface610or a network650via the network interface615.

In some embodiments, the memory625stores instructions660. However, in various embodiments, the instructions660are stored partially in memory625and partially in storage630, or they are stored entirely in memory625or entirely in storage630, or they are accessed over a network650via the network interface615.

Instructions660can be processor-executable instructions for performing any portion of, or all of, any of the methods ofFIGS.3-5and/or any of the functionality discussed inFIGS.1and2.

In various embodiments, the I/O devices612include an interface capable of presenting information and receiving input. For example, I/O devices612can present information to a user interacting with computer system600and receive input from the user.

Computer system600is connected to the network650via the network interface615. Network650can comprise a physical, wireless, cellular, or different network.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Referring now toFIG.8, a set of functional abstraction layers provided by cloud computing environment50(FIG.7) is shown. It should be understood in advance that the components, layers, and functions shown inFIG.8are intended to be illustrative only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

Embodiments of the present invention can also be delivered as part of a service engagement with a client corporation, nonprofit organization, government entity, internal organizational structure, or the like. These embodiments can include configuring a computer system to perform, and deploying software, hardware, and web services that implement, some or all of the methods described herein. These embodiments can also include analyzing the client's operations, creating recommendations responsive to the analysis, building systems that implement subsets of the recommendations, integrating the systems into existing processes and infrastructure, metering use of the systems, allocating expenses to users of the systems, and billing, invoicing (e.g., generating an invoice), or otherwise receiving payment for use of the systems.

Different instances of the word “embodiment” as used within this specification do not necessarily refer to the same embodiment, but they can. Any data and data structures illustrated or described herein are examples only, and in other embodiments, different amounts of data, types of data, fields, numbers and types of fields, field names, numbers and types of rows, records, entries, or organizations of data can be used. In addition, any data can be combined with logic, so that a separate data structure may not be necessary. The previous detailed description is, therefore, not to be taken in a limiting sense.

In order to further clarify aspects of the present disclosure, a non-exhaustive, non-limiting list of example embodiments will be discussed.

In a first example embodiment, aspects of the present disclosure are directed toward a method comprising receiving, at a backup and restore coordinator, a plurality of backup and restore requests from at least two uncoordinated backup functionalities implemented in a virtual environment, the virtual environment including a hypervisor hosting a plurality of virtual machines and a backup server. The method further comprising extracting, by the backup and restore coordinator and from respective requests of the plurality of backup and restore requests, respective information including target data, backup resource information, and a type of request. The method further comprising ordering the plurality of backup and restore requests in a prioritized queue of the backup and restore coordinator based on the information extracted from the plurality of backup and restore requests.

In a second example embodiment including the aspects of the first embodiment, a first request of the plurality of backup and restore requests is prioritized over a second request in response to determining that the first request is a restore request and that the second request is a backup request.

In a third example embodiment including the aspects of any of the first embodiment, a first request of the plurality of backup and restore requests is executed simultaneously with a second request in response to determining that the first request and the second request are associated with non-overlapping backup resources.

In a fourth example embodiment including the aspects of any of the first through third embodiments, at least a portion of the plurality of backup and restore requests are received at the backup and restore coordinator from a monitoring client implemented by the backup and restore coordinator, and where the monitoring client is associated with a backup client of a virtual machine of the plurality of virtual machines.

In a fifth example embodiment including the aspects of any of the first through fourth embodiments, the ordering the plurality of backup and restore requests in the prioritized queue is based at least in part on backup preferences for respective virtual machines of the plurality of virtual machines hosted by the hypervisor, where the backup preferences comprise preferred times and preferred frequencies.

In a sixth example embodiment including the aspects of any of the first through fifth embodiments, the ordering the plurality of backup and restore requests in the prioritized queue is based at least in part on a backup and restore database storing information related to ongoing and historical backups and restores associated with the plurality of virtual machines.

In a seventh example embodiment including the aspects of any of the first through sixth embodiments, the ordering the plurality of backup and restore requests in the prioritized queue is based at least in part on settings configured by an administrator of the backup and restore coordinator, where the settings include at least a type of backup, an auto-registration configuration, and an ordering scheme.

In an eighth example embodiment including the aspects of any of the first through seventh embodiments, the at least two uncoordinated backup functionalities are provided by different vendors.

In a ninth example embodiment including the aspects of any of the first through eighth embodiments, the at least two uncoordinated backup functionalities comprise a backup client implemented by one of the plurality of virtual machines, and another uncoordinated backup functionality selected from a group consisting of: a proxy backup client associated with the hypervisor, and a backup server scheduler associated with the backup server.

In a tenth example embodiment including the aspects of any of the first through eighth embodiments, the at least two uncoordinated backup functionalities comprise a backup client implemented by one of the plurality of virtual machines, a proxy backup client associated with the hypervisor, and a backup server scheduler associated with the backup server.

In an eleventh example embodiment including the aspects of any of the first through tenth embodiments, the ordering the plurality of backup and restore requests includes removing duplicate requests, wherein duplicate requests include at least two backup requests received from different uncoordinated backup functionalities and attempting to backup a same set of data.

In a twelfth example embodiment including the aspects of any of the first through eleventh embodiments, the ordering the plurality of backup and restore requests includes removing duplicate requests, wherein duplicate requests include at least two restore requests received from different uncoordinated backup functionalities and attempting to restore a same set of data.

In a thirteenth example embodiment including the aspects of any of the first through eleventh embodiments, the plurality of backup and restore requests includes a first backup request, and ordering the plurality of backup and restore requests further comprises determining, by the backup and restore coordinator querying a backup and restore database, that no other backups are currently running, and updating, by the backup and restore coordinator, the backup and restore database to include the first backup request, and authorizing, by the backup and restore coordinator, the first backup request in response to determining that no other backups are currently running.

In a fourteenth example embodiment including the aspects of any of the first through eleventh embodiments, the plurality of backup and restore requests includes a first backup request, and where ordering the plurality of backup and restore requests further comprises determining, by the backup and restore coordinator querying a backup and restore database, that another backup is running on a different backup resource than a backup resource included in the first backup request, and updating, by the backup and restore coordinator, the backup and restore database to include the first backup request, and authorizing, by the backup and restore coordinator, the first backup request in response to determining that the other backup is running on the different backup resource, wherein the first backup request and the other backup execute simultaneously.

In a fifteenth example embodiment including the aspects of any of the first through eleventh embodiments, the plurality of backup and restore requests includes a first backup request, and where ordering the plurality of backup and restore requests further comprises determining, by the backup and restore coordinator querying a backup and restore database, that another backup is running on a same backup resource as a backup resource included in the first backup request; and delaying, by the backup and restore coordinator, the first backup request; and authorizing, by the backup and restore coordinator, the first backup request in response to receiving an indication that the other backup is finished.

In a sixteenth example embodiment including the aspects of any of the fifteenth embodiment, the first backup request is delayed until a predicted end time of the other backup, wherein the predicted end time is retrieved from the backup and restore database.

In a seventeenth example embodiment including the aspects of any of the first through eleventh embodiments, the plurality of backup and restore requests includes a first restore request, and where ordering the plurality of backup and restore requests further comprises determining, by the backup and restore coordinator querying a backup and restore database, that another backup is currently running; and determining, by the backup and restore coordinator, that the other backup cannot be paused; and delaying, by the backup and restore coordinator, the first restore request until the other backup is complete; and authorizing, by the backup and restore coordinator, the first restore request in response to an indication that the other backup completed.

In an eighteenth example embodiment including the aspects of any of the first through eleventh embodiments, where the plurality of backup and restore requests includes a first restore request, and where ordering the plurality of backup and restore requests further comprises determining, by the backup and restore coordinator querying a backup and restore database, that another backup is currently running; and pausing, by the backup and restore coordinator, the other backup; and authorizing, by the backup and restore coordinator, the first restore request; and resuming, by the backup and restore coordinator, the other backup upon completion of the first restore request.

In a nineteenth example embodiment, aspects of the present disclosure are directed toward a computer program product configured to perform functionality previously discussed in any of the first through eighteenth example embodiments.

In a twentieth example embodiment, aspects of the present disclosure are directed to a system storing processor-executable instructions in a tangible storage medium, which, when executed by a processor, are configured to perform methods consistent with any of the first through eighteenth example embodiments previously discussed.

In a twenty-first example embodiment, aspects of the present disclosure are directed to a system comprising a hypervisor; a plurality of virtual machines (VMs) hosted by the hypervisor; a backup server communicatively coupled to the hypervisor; at least two uncoordinated backup functionalities configured to provide redundancy to the plurality of virtual machines using the backup server; and a backup and restore coordinator communicatively coupled to the hypervisor, wherein the backup and restore coordinator comprises a prioritized queue that orders a plurality of backup and restore requests received from the at least two uncoordinated backup functionalities.

In a twenty-second example embodiment, aspects of the present disclosure are directed to a backup and restore coordinator comprising a communication interface for communicating with a hypervisor and a plurality of monitoring clients respectively coupled to a plurality of virtual machines hosted by the hypervisor in a virtual environment. The backup and restore coordinator further comprising a profiles database storing backup preferences of the plurality of virtual machines. The backup and restore coordinator further comprising a settings database storing administrative settings regarding types of backups for respective virtual machines, auto-registration settings for respective virtual machines, and a prioritization scheme. The backup and restore coordinator further comprising a backup and restore database storing historical and ongoing requests for backups and restores received from at least two uncoordinated backup functionalities implemented in the virtual environment. The backup and restore coordinator further comprising a prioritized queue of backups and restores for the plurality of virtual machines, wherein the prioritized queue orders a plurality of backup and restore requests based on information in the profiles database, settings database, and backup and restore database. The backup and restore coordinator further configured to implement backups and restores in the virtual environment according to the prioritized queue.

The aforementioned list of first through twenty-second example embodiments is non-limiting and non-exhaustive.