Program recovery

Based on the selective recovery engine, the recovery technology is dynamically selected according to the compatibility of the restoration copy and the update time of the patch, and the problem of incompatibility and recovery during the recovery process of the program after the collapse of the program is solved, and the rapid and reliable recovery of the program is achieved.

CN119377001APending Publication Date: 2025-01-28HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202410421897.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-25
Filing Date
2024-04-09
Publication Date
2025-01-28

AI Technical Summary

Technical Problem

In case of program crashes or exceptions, using a recovery copy to fully recover the program may result in incompatible data storage layouts, causing program failure or unavailability, and an update patch may be required during the recovery process, resulting in excessive recovery time.

Method used

The selective restoration engine is dynamically selected program restoration technology based on the compatibility and time of the data storage layout and application update patch based on the data storage layout in the restoration copy to avoid completely restoring the problem of incompatibility and optimizing the recovery time.

Benefits of technology

Through the dynamic selection of selective restoration engines, the data recovered to the situation of not compatible storage layout, reducing the risk of program failure, and optimizing the total time of the recovery process to ensure the rapid availability of the program.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119377001A_ABST
    Figure CN119377001A_ABST
Patent Text Reader

Abstract

The present disclosure generally relates to program recovery. In some examples, a system receives a request to restore a program. The system accesses metadata associated with a recovered copy of information for the program, and determines compatibility of a storage arrangement of data in the recovered copy with the program based on the metadata. The system determines whether to fully restore the program or partially restore the program using the restore copy based on the determined compatibility.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] A program executable in a computer system may employ various program components, such as an operating system (OS), application programs, or other machine-readable instructions. The program may also access data having a specific storage arrangement, such as a storage arrangement associated with a specific version of a file system or a storage arrangement associated with a specific version of a database server. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Some embodiments of the present disclosure are described with reference to the following drawings.

[0003] Figure 1 is a block diagram of an arrangement including a program recovery engine according to some examples.

[0004] Figure 2 is a flow diagram of a process for selecting a program recovery technique based on checking compatibility of a storage arrangement for data in a recovery copy, according to some examples.

[0005] Figure 3 is a flow chart for selecting a program recovery technique based on determining an amount of time involved in applying an update patch according to other examples.

[0006] Figure 4 is a block diagram of a storage medium storing machine-readable instructions according to some examples.

[0007] Figure 5 is a block diagram of a system according to some examples.

[0008] Figure 6 is a flow diagram of a process according to some examples.

[0009] Throughout the drawings, the same reference numerals designate similar, but not necessarily identical, elements. The drawings are not necessarily drawn to scale, and the size of some parts may be exaggerated to more clearly illustrate the examples shown. In addition, the drawings provide examples and / or implementations consistent with the description; however, the description is not limited to the examples and / or implementations provided in the drawings. DETAILED DESCRIPTION

[0010] Programs executed in the system may crash or experience other types of exceptions that may cause failure or suboptimal performance of the program. The program uses a collection of program components, and the program also accesses data stored in a storage system. The exception associated with the program may be caused by errors in the data and / or the crash or other problems of any program component in the collection of program components. In one example, the program is a virtual machine (VM). In other examples, other types of programs may be used.

[0011] In response to detecting abnormal behavior of a program, a recovery process can be initiated. The recovery process can use a recovery copy (e.g., a backup copy or a snapshot) that includes information for the program to restore the program. The information for the program may include machine-readable instructions of program components used by the program and data accessed by the program. Restoring the program using the recovery copy can provide a complete restoration of the program, wherein the program is completely restored to the program state that existed when the recovery copy was created (the complete restoration of the program includes both restoring the machine-readable instructions of the program components used by the program and restoring the data accessed by the program). For example, if the program is a VM, a complete restoration will restore the VM (including its operating system (OS), (one or more) applications, and data) to the VM state that existed when the recovery copy was created.

[0012] When completely restoring a program from a recovery copy, compatibility issues related to the storage arrangement of data used by the program may occur. The current version of the program can use data according to a specific storage arrangement, such as a storage arrangement associated with a specific version of a file system or a storage arrangement associated with a specific version of a database server. The data stored in the recovery copy may be based on an earlier storage arrangement (e.g., an earlier version of a file system or an earlier version of a database server) that is incompatible with the current version of the program. Therefore, completely restoring a program from a recovery copy may produce data in an incompatible storage arrangement that cannot be accessed by the current version of the program, which may result in a malfunctioning operation of the program. For example, the program may crash or otherwise return an error.

[0013] In addition, using a recovery copy to completely restore a program to a previous state may result in restoring previous versions of program components used by the program. Such previous versions of program components may be versions before applying update patches, which are used to fix errors or security issues associated with program components. Therefore, the program restored to a previous state may be in a vulnerable or faulty state until the missing update patches are applied, which may take some time. The total time to restore a program using a recovery copy includes the time associated with restoring the program from the recovery copy, as well as the time associated with applying any update patches. If the total recovery time is long, the program being restored may be unavailable for a relatively long time.

[0014] According to some embodiments of the present disclosure, a selective recovery engine is capable of dynamically selecting one of a plurality of different program recovery techniques to be used depending on any one or some combination of the following factors: compatibility of the storage arrangement of data in the recovery copy, or the estimated amount of time required to apply one or more update patches to a program component after recovery from the recovery copy.

[0015] The selective restore engine determines the compatibility of the storage arrangement of the data in the restored copy with the program, and determines whether to fully restore the program using the restored copy or partially restore the program by restoring only the data of the program based on the determined compatibility. In this way, the selective restore engine can avoid or reduce the possibility of restoring data to a previous storage arrangement that may be incompatible with the current version of the program. If data in an incompatible storage arrangement is restored from the restored copy, a program failure may occur after the restoration. As a result, the availability of the program after the restoration may be delayed, wherein the delay may include the amount of time used to convert or export the data in the incompatible storage arrangement to the compatible storage arrangement.

[0016] If the selective restore engine detects that the current version of the program is incompatible with the storage arrangement of the data in the recovery copy, the program is not fully restored from the recovery copy, which would result in data having an incompatible storage arrangement. Instead, the selective restore engine performs a partial recovery of the program, wherein the data is restored from the recovery copy without restoring other aspects of the program, such as the file system or database server used by the program. Restoring the file system or database server from the recovery copy would result in the data to be restored having the storage arrangement of the restored file system or database server, which may be incompatible with the current version of the program. On the other hand, restoring only the data involves copying the original data from the recovery copy without involving the corresponding storage arrangement. For example, files can be copied from the recovery copy without arranging the files according to the file system represented in the recovery copy. As used herein, "original data" in a recovery copy refers to data that does not have any specific storage arrangement as defined by a file system, database server, or any other type of data management module.

[0017] The "current version" of a program refers to the version of the program that was executing on the system before it was determined that a program recovery process was to be performed. The "storage layout" of data refers to how the data is formatted or otherwise arranged. For example, data may be arranged in files and directories of a file system. Over time, a file system may be updated, starting with an initial version and continuing to subsequent versions of the file system. Additional features may be added to a new version of a given type of file system. Alternatively, a file system may be updated to fix bugs or other problems. When a file system is updated, programs that use the file system may also be updated, such as to utilize new features or otherwise interact with the new version of the file system. Programs that are updated to support a newer version of a file system may not be able to use data stored using an earlier version of the file system. An earlier version of the file system will be considered an incompatible file system for the program.

[0018] In some cases, the storage arrangement can be changed by changing the type of the file system storing the data. For example, the program can initially use the first type of file system. At a later point in time, a decision can be made to change the file system to a different type of file system, at which time the program is also updated to use the data stored in the different types of file systems. The program updated to use the data stored in the different types of file systems will not be able to use the data stored in the first type of file system. The first type of file system will be regarded as an incompatible file system of the program. Examples of different types of file systems can include any one or some combination of the following items: file allocation table (file allocation table, FAT) file system (for example, FAT12 file system, FAT16 file system, FAT32 file system or another version of FAT file system), new technology file system (New Technology File System, NTFS), resilient file system (Resilient File System, ReFS), hierarchical file system (Hierarchical File System, HFS), high performance file system (High Performance File System, HPFS), extended file system (for example, ext2 file system, ext3 file system, ext4 file system or another version of extended file system), virtual machine file system (Virtual Machine File System, VMFS), flash file system for flash memory or another type of file system.

[0019] In other examples, the storage arrangement of data may include data stored according to a data model of a given database server. Different database servers (which may include different database management system (DBMS) programs) may employ different data models. Examples of different data models include any one or some combination of the following: a relational database model, an object-oriented database model, a hierarchical database model, a network database model, or another data model. If the data model of a database server is updated to a newer version, or if a database server of a first type (which uses a first data model) is replaced by a database server of a second type (which uses a second data model different from the first data model), then if data according to the previous data model is restored from a recovery copy, incompatible data storage arrangements may result.

[0020] In other examples, the storage arrangement of data may include a storage arrangement used by a map-reduce system that stores data according to a map-reduce model (eg, according to a Hadoop file system). In other examples, other types of data storage arrangements may be employed.

[0021] In other embodiments of the present disclosure, the selective recovery engine may alternatively or additionally select a program recovery technique for recovering a program based on the amount of time involved in updating the application after recovery (such as based on applying an update patch). The selective recovery engine identifies one or more update patches to be applied after recovering the program using the recovery copy, and estimates a total recovery time based on the determined one or more update patches to be applied, the total recovery time including the time to recover the program from the recovery copy and the time to apply the one or more update patches. The selective recovery engine determines whether to fully recover the program using the recovery copy or to perform a partial recovery of the program based on the total recovery time.

[0022] The "update patch" can incrementally change the program components used by the program when applied to fix errors or security issues associated with the program components. Alternatively, the "update patch" can replace a first type of program component with a different type of program component when applied (e.g., replacing a first type of OS with a second type of OS, replacing a first type of application with a second type of application, etc.). Different types of program components (e.g., OS, application, etc.) can be provided by different vendors, or can operate according to different protocols (e.g., open source protocols, protocols defined by standard bodies, proprietary protocols, etc.).

[0023] The selected program recovery technique may be based on both: (1) a compatibility check on the storage arrangement of the data, and (2) a determination of the amount of time involved in applying the update. In different examples, the selected program recovery technique may be based only on a compatibility check on the storage arrangement of the data, or alternatively, based only on a determination of the amount of time involved in applying the update.

[0024] Figure 1106. The computer system may include any one or some combination of the following: a desktop computer, a laptop computer, a tablet computer, a server computer, a smart phone, a gaming device, an Internet of Things (IoT) device, a vehicle, or any other type of electronic device. The storage system may include a collection of storage devices. As used herein, a "collection" of items may refer to a single item or multiple items. Therefore, a collection of storage devices may include a single storage device or multiple storage devices. Examples of storage devices may include any one or some combination of the following: a disk-based storage device, a solid-state drive, a memory (such as a dynamic random access memory (DRAM) device or a static random access memory (SRAM) device), or other types of storage devices.

[0025] although Figure 1 The primary storage system 106 is shown as being separate from the computer system 102, but in other examples, the primary storage system 106 may be part of the computer system 102. Furthermore, in other examples, multiple computer systems may be able to access data in the primary storage system 106.

[0026] The primary storage system 106 is a storage system that is actively used by programs running in the computer system 102 during the execution of the programs. The primary storage system 106 can be different from the backup storage system 108, which stores one or more recovery copies 110. The backup storage system 108 can be located in a different geographic location than the primary storage system 106. In other examples, the backup storage system 108 and the primary storage system 106 can be located in the same geographic location. In other examples, the recovery copies 110 can be stored in the primary storage system 106, and the backup storage system 108 can be omitted.

[0027] A "recovery copy" may refer to any copy of information that can be used to restore the state of a program, such as a program in computer system 102. The state of a program may refer to information about program components used by the program and data used by the program. More specifically, a recovery copy may store both machine-readable instructions and data that can be used to restore the program to a previous state.

[0028] More generally, a recovery copy created for a program may refer to a recovery copy created for a collection of programs (a single program or multiple programs). Restoring a program from a recovery copy may refer to restoring a collection of programs from a recovery copy.

[0029] A recovery copy may include a backup copy or a snapshot. A backup copy is a copy of all the information (machine-readable instructions and data) of a program. Whenever a backup copy is taken, all the information of the program is copied to the backup copy. A snapshot includes a point-in-time copy of the program information that has changed. A snapshot taken at a given point in time includes the changed information (changed machine-readable instructions and data) relative to the most recent recovery copy (which may be a full backup copy or a previous snapshot).

[0030] An example of a program executing in computer system 102 is virtual machine (VM) 112. VM includes a virtual computing environment that utilizes emulated hardware resources of computer system 102. Computer system 102 includes hardware resources 114. Hypervisor 116 (also known as a virtual machine monitor or VMM) in computer system 102 performs emulation of hardware resources 114 and presents the emulated resources for use by VM 112 (and other VMs, if present). Hypervisor 116 also controls the management of VMs in computer system 102, including starting a VM, modifying a VM, or removing a VM. Although in Figure 1 Only one VM is depicted in FIG. 1 , but in other examples, multiple VMs may be executed in computer system 102 .

[0031] This discussion relates to a VM as an example of a program that employs various program components and data 104 in primary storage system 106. Program components used by VM 112 include application programs 118, client OS 120, and data management module 122. Examples of application programs 118 may include any one or some combination of the following: a network server application (for providing network functionality), a security program (for providing protection against security risks such as those presented by malware), or any other type of application. VM 112 may execute multiple applications. In other examples, other types of programs may utilize various program components.

[0032] The data management module 122 is used to manage access to the data 104 stored in the primary storage system 106 according to the specified storage arrangement. In some examples, the data management module 122 is a file system that stores the data 104 in the form of files and directories. Note that the file system can be part of the client OS 120. In other examples, the data management module 122 is a DBMS program that stores data according to a data model in a database including database tables or other database objects. In other examples, the data management module 122 is a mapping simplification program that stores data according to a mapping simplification model (e.g., a Hadoop file system). Other types of data management modules can be used in other examples.

[0033] The hardware resources 114 in the computer system 102 may include any one or some combination of the following: a central processing unit (CPU) 124 (including one or more processors), a memory 126 (including one or more memory devices), a network interface 128 that allows the computer system 102 to communicate over a network, input / output (I / O) devices 130 that provide various I / O functions, or other hardware resources.

[0034] The primary storage system 106 includes a data disk 150 (which stores data 104 accessed by the VM 112), an application disk 152, and an OS disk 154. As used herein, a "disk" may refer to a storage area of ​​a storage medium of the primary storage system 106. The storage medium may include any one or some combination of the following: a disk-based storage device, a solid-state drive, a memory device, or other type of storage device. The storage area that constitutes the disk may include any portion of one or more storage devices. The disks 150, 152, and 154 are presented to the VM 112 as virtual disks by the hypervisor 116. Note that there may be multiple data disks, multiple application disks, and / or multiple OS disks.

[0035] The data disk 150 stores data 104 used by the VM 112 (e.g., files of a file system, database tables of a database server, data of a mapping reduction system, etc.). The application disk 152 stores code images (including machine-readable instructions) of the application programs 118 (and possibly the data management module 122) executed in the VM 112. The VM 112 can load the machine-readable instructions of the application programs 118 from the application disk 152. The OS disk 154 stores code images (including machine-readable instructions of the client OS 120). The VM 112 can load the machine-readable instructions of the client OS 120 from the application disk 154.

[0036] The backup / restore system 132 includes a backup engine 133 that manages the backup of the state of the computer system 102 to a recovery copy 110, which may be stored in the backup storage system 108 (or alternatively, in the case where the backup storage system 108 is omitted, in the primary storage system 106). The backup / restore system 132 also includes a selective restore engine 134 that dynamically applies one of a plurality of different types of program restore techniques based on one or more factors.

[0037] As used herein, an "engine" may refer to one or more hardware processing circuits, which may include any one or some combination of the following: a microprocessor, a core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, or another hardware processing circuit. Alternatively, an "engine" may refer to a combination of one or more hardware processing circuits and machine-readable instructions (software and / or firmware) executable on the one or more hardware processing circuits.

[0038] The backup engine 133 may create the recovery copy 110 in response to any of a variety of events. In some examples, the event that triggers the creation of the recovery copy 110 is a time-based event. For example, the backup engine 133 may create a recovery copy at a specified point in time (e.g., a periodic point in time). In such examples, the backup engine 133 periodically creates the recovery copy 110 to back up the corresponding state of the VM 112 at different points in time. In other examples, the backup engine 133 may create the recovery copy 110 in response to different events, such as an explicit backup request, an event associated with a power transition of the computer system 102, or any other event.

[0039] The selective restore engine 134 according to some examples of the present disclosure can dynamically select a different program restore technique depending on one or more factors. The program restore technique may include a first program restore technique in which the selective restore engine 134 completely restores the state of the VM 112 from the recovery copy 110. In some examples where multiple recovery copies 110 are available, the selective restore engine 134 can select one of the recovery copies 110 for performing the recovery of the VM 112 based on which recovery copy 110 will be most effective (discussed further below).

[0040] The second program recovery technique performs a partial recovery of VM 112, such as by recovering data (but not machine-readable instructions, such as application 118, guest OS 120, and data management module 122) from recovery copy 110. In other examples, a partial recovery of VM 112 may recover data and machine-readable instructions of application 118 (but not machine-readable instructions of guest OS 120 and / or data management module 122) from recovery copy 110. More generally, a partial recovery of VM 112 may recover a subset (less than all) of the information in recovery copy 110.

[0041] The backup / restore system 132 includes a memory 142 that stores various information that can be used by the selective restore engine 134. As an example, the memory 142 may include storage arrangement information 144 (e.g., a version of a file system, a version of a database server, a version of a map reduction system, or a version of another data management module) regarding the current storage arrangement of data used by the VM 112. The storage arrangement information 144 may be obtained from the VM 112, such as by the backup engine 133 or another entity of the backup / restore system 132, and stored in the memory 142.

[0042] Memory 142 may also store program vulnerability information 146 indicating the vulnerabilities of different versions of VM 112. Program vulnerability information 146 includes information related to the details of each program component (e.g., client OS 120 and / or application 118) and the vulnerability associated with each program component and information on the remedial measures to be applied for the vulnerability. Examples of remedial measures to be applied may include applying an update patch to fix the vulnerability. The "vulnerability" of a program component may refer to an error, a security issue, or any other problem that may affect the performance of the program component. Program vulnerability information 146 may list the different versions of the program component and the vulnerability of each version of the program component and the remedial measures to be applied.

[0043] Program vulnerability information 146 can be populated using any of a variety of techniques. For example, program vulnerability information 146 can be updated manually. Alternatively, program vulnerability information 146 can be created by any of a variety of tools, such as the Vulnerability Tracking Notification (VTN) tool from Hewlett Packard Enterprises, the Microsoft Defender vulnerability management tool, or any other tool that can collect information about detected vulnerabilities of program components.

[0044] Memory 142 may also store program component metadata 148 for each recovery copy 110 created for VM 112. There is a corresponding instance of program component metadata 148 for each recovery copy 110. More specifically, a first instance of program component metadata 148 is stored for a first recovery copy 110, a second instance of program component metadata 148 is stored for a second recovery copy 110, and so on.

[0045] Program component metadata 148 includes information identifying program components (e.g., application 118, guest OS 120, and data management module 122) used by VM 112, as well as the version of each program component when the corresponding recovery copy is created. When creating recovery copy 110, backup engine 133 stores a corresponding instance of program component metadata 148 in memory 142. The corresponding instance of program component metadata 148 includes information about the program component when creating recovery copy 110. Backup engine 133 can obtain information from VM 112 for inclusion in the instance of program component metadata 148.

[0046] For any given recovery copy 110, selective restore engine 134 may determine which patch updates to apply for the versions of program components identified in the instance of program component metadata 148 based on program vulnerability information 146 and the corresponding instance of program component metadata 148 for the given recovery copy 110. For example, if the instance of program component metadata 148 for a given recovery copy 110 identifies version X of application 118, version Y of guest OS 120, and version Z of data management module 122 used by VM 112 when the corresponding recovery copy 110 was created, then selective restore engine 134 may query program vulnerability information 146 to identify patch updates, if any, to apply to version X of application 118, version Y of guest OS 120, and version Z of data management module 122.

[0047] In some examples, selective restore engine 134 may present information related to each recovery copy 110 in a user interface (UI) 160 of a user system 162. User system 162 may be a desktop computer, a laptop computer, a tablet computer, a smartphone, or any other type of electronic device.

[0048] The information about each recovery copy 110 presented in UI 160 may include any one or some combination of the following: the time the recovery copy was created, the expiration date of the recovery copy, the versions of the program components in the recovery copy, the last update patch applied to each program component, how many update patches to apply, etc. The information of the recovery copies 110 presented in UI 160 may be used by the user to decide how best to perform a recovery. For example, the user may select a specific recovery copy 110 for restoring VM 112.

[0049] Figure 2 is a flow chart of a selective restore process that can be performed by the selective restore engine 134 according to some examples of the present disclosure. In other examples, Figure 2 The tasks may be performed in a different order, some tasks may be omitted, and other tasks may be added.

[0050] The selective restore engine 134 receives (at 202) a request to initiate a restore of a VM 112 (or more generally, a request to restore a program in the computer system 102). The request may be initiated by a user or any other entity (such as a program or a machine). The request to initiate a restore may be in response to detecting an error or failure of the VM 112.

[0051] The selective restore engine 134 determines (at 204) whether the recovery copy 110 in the backup storage system 108 is valid. In one example, the selective restore engine 134 can detect whether the recovery copy 110 is corrupted, such as based on a signature (e.g., a checksum, a hash value, or another value), which is calculated based on each recovery copy 110. The selective restore engine 134 can compare the signature calculated based on a given recovery copy 110 with the expected signature. If the signatures do not match, this indicates that the recovery copy 110 may be corrupted. If all recovery copies 110 are corrupted, the selective restore engine 134 determines that the recovery copy 110 is invalid.

[0052] As another example, the selective restore engine 134 can determine the compatibility of each recovery copy 110. Due to a configuration change of the backup / restore system 132, the recovery copies 110 generated before the configuration change may no longer be usable (i.e., the previous recovery copies 110 are not compatible with the new configuration of the backup / restore system 132). If all recovery copies 110 are incompatible, the selective restore engine 134 determines that the recovery copies 110 are invalid.

[0053] If the selective restore engine 134 determines (at 204) that the recovery copy 110 is invalid, the selective restore engine 134 returns (at 206) an error and the restore process stops.

[0054] On the other hand, if the selective restore engine 134 determines (at 204) that there is at least one valid recovery copy 110, then the selective restore engine 134 continues the recovery process. The selective restore engine 134 restores the data stored in the memory 142 ( Figure 1 ) to check (at 208) the storage arrangement of data 104 used by the current version of VM 112 executing in computer system 102.

[0055] The selective restore engine 134 examines (at 210) the storage arrangement of the data stored in each recovery copy 110. The selective restore engine 134 determines (at 212) whether the storage arrangement of the data 104 indicated by the storage arrangement information 144 matches any of the storage arrangements of the data in the recovery copy 110. The storage arrangement of the data in the recovery copy may be determined based on accessing an instance of the program component metadata 148 associated with the recovery copy, and determining a version of the data management module 122 specified by the instance of the program component metadata 148. The version of the data management module 122 provides an indication of the storage arrangement of the data in the recovery copy. Determining whether the storage arrangement of the data 104 indicated by the storage arrangement information 144 matches the storage arrangement of the data in the recovery copy 110 may include comparing the version of the data management module 122 specified by the storage arrangement information 144 with the version of the data management module 122 specified by the corresponding instance of the program component metadata 148 for the recovery copy 110.

[0056] If the storage arrangement of data 104 indicated by storage arrangement information 144 does not match the storage arrangement of data in any of the recovery replicas 110, then the selective restore engine 134 determines that the storage arrangement of data in the recovery replica 110 is incompatible with the current version of VM 112. In response to determining that each recovery replica 110 includes a storage arrangement of data that is incompatible with the current version of VM 112, the selective restore engine 134 performs (at 214) a partial recovery of VM 112 by restoring only the original data from the recovery replica 110. If multiple recovery replicas are available, the original data of the latest recovery replica 110 may be restored in some examples.

[0057] Note that in the case where data management module 122 has not crashed, a partial recovery of VM 112 is possible, copying the original data from recovery copy 110. Therefore, if selective restore engine 134 detects that data management module 122 has crashed, selective restore engine 134 will not choose to perform a partial recovery of VM 112.

[0058] If the data management module 122 crashes, it is necessary to perform a full recovery of the VM 112 from the recovery copy 110, then apply update patches to the restored VM 112 (to bring the program components used by the VM 112 up to their latest versions) and convert or otherwise export the data to a storage arrangement that is compatible with the updated VM 112 after applying the update patches.

[0059] In other examples, partial recovery of VM 112 may include restoring the original data and applications 118 of VM 112 , but not restoring guest OS 120 or data management module 122 .

[0060] If the selective restore engine 134 determines (at 212) that the storage arrangement of the data 104 indicated by the storage arrangement information 144 matches the storage arrangement of the data in any of the recovery replicas 110, the selective restore engine 134 determines that the storage arrangement of the data in at least one of the recovery replicas 110 is compatible with the current version of the VM 112. In response to such a determination, the selective restore engine 134 completely restores (at 216) the VM 112 to a previous state based on the recovery replica 110. If multiple recovery replicas 110 are available with compatible storage arrangements for the data, the selective restore engine 134 may select one of the multiple recovery replicas 110 to use, such as the recovery replica 110 to which the least number of update patches must be applied.

[0061] After fully restoring the VM 112 from the selected recovery copy 110, the selective restore engine 134 applies (at 218) the patch update to the program components used by the restored VM 112. After applying the patch update, the restored VM 112 is available for use in the computer system 102.

[0062] The patch updates applied are determined by the selective restore engine 134 based on the program vulnerability information 146 and the instance of the program component metadata 148 from which the recovery copy 110 of the VM 112 was restored.

[0063] Figure 3 is a flow chart of a selective restoration process performed by the selective restoration engine 134 according to other examples of the present disclosure. In other examples, Figure 3 The tasks may be performed in a different order, some tasks may be omitted, and other tasks may be added.

[0064] The selective restore engine 134 receives (at 302) a request to initiate a restore of the VM 112 (or more generally, a request to restore a program in the computer system 102). The selective restore engine 134 determines (at 304) whether the restore copy 110 in the backup storage system 108 is valid (similar to Figure 2 204 in the determination).

[0065] If the selective restore engine 134 determines (at 304) that the recovery copy 110 is invalid, the selective restore engine 134 returns (at 306) an error and the restore process stops.

[0066] On the other hand, if the selective restore engine 134 determines (at 304) that there is at least one valid recovery copy 110, then the selective restore engine 134 proceeds with the recovery process. The selective restore engine 134 selects one of the different program recovery techniques to use based on an estimate of the time involved in applying one or more of the update patches to the recovered version of the VM 112 (or, more generally, to the recovered version of the program in the computer system 102).

[0067] The selective restore engine 134 calculates (at 306) the recovery time (T RESTORE ). RESTORE It is the sum of the time involved in extracting information (including machine-readable instructions and data) from recovery copy 110 , the time involved in loading machine-readable instructions into VM 112 , and the time involved in loading data into data disk 150 of primary storage system 106 .

[0068] T RESTORE The calculation can be based on the size of the recovery copy 110 (the larger the size of the recovery copy 110, the longer the time involved in reading the information of the recovery copy 110), the operating speed of the backup storage system 108 (which affects the speed at which information can be read from the backup storage system 108), the communication rate through the network (which affects the speed at which information is transmitted between the computer system 102, the backup storage system 108 and the primary storage system 106), and the operating speed of the primary storage system 106 (which affects the speed at which the recovered data can be written to the primary storage system 106).

[0069] The selective restore engine 134 calculates (at 308) the update time (T ) involved in applying any update patches to the restored VM 112 as restored from the recovery copy 110. PATCHES As described above, the selective restore engine 134 identifies which patch updates to apply based on the program vulnerability information 146 and the instance of the program component metadata 148 of the recovery copy 110 from which the VM 112 is to be restored. The time T of applying the set of update patches PATCHES is the sum of the estimated time to apply each update patch in the set of update patches.

[0070] The size of each update patch is known. For example, the size of each update patch may be published by the source of the update patch and stored in the program vulnerability information 146 or as part of other metadata. In some cases, the source of the update patch may also provide an estimated time for applying the update patch. The estimated time may be used by the selective recovery engine 134 as the time involved in applying the update patch.

[0071] If no estimated time is provided for the update patch, the selective recovery engine 134 can estimate the time to apply the update patch based on the following factors: the size of the update patch, the communication rate through the network (which affects the speed at which the update patch can be transmitted to the computer system 102), and the type of update patch (e.g., whether the update patch is for an application, an OS, etc.), the capabilities of the computer system 102 (e.g., CPU capacity, memory capacity, storage device capacity, etc.), and / or other factors. The type of update patch can affect the time it takes to apply the update patch. For example, an update patch for an OS may take longer than an update patch for an application. A computer system with a larger CPU capacity and / or a larger memory or storage device can apply the update patch more quickly than a computer system with a lower CPU capacity and / or a smaller memory or storage device.

[0072] The selective restore engine 134 calculates (at 310) the disk restore time (T ) involved in restoring the VM 112 from the code image on the selected disk (such as the application disk 152 and / or the OS disk 154) of the primary storage system 106. IMAGE ). In some examples, restoring VM 112 from a code image on disk can be based on disk-level recovery technology provided by hypervisor 116. Hypervisor 116 provides a mechanism to overwrite or recreate a VM's disk. The recovery process can use such a mechanism to restore a selected disk of the VM.

[0073] Note that if the selective restore engine 134 knows that the guest OS 120 is operating correctly, the selective restore engine 134 may choose not to restore the guest OS 120 from the OS disk 154, but may restore it from the application disk 152. In the latter case, T IMAGE The time involved in restoring machine-readable instructions from the code image on the application disk 152. The time to restore the VM 112 from each disk of the primary storage system 106 may be provided by the hypervisor 116 to the selective restore engine 134. Alternatively, the time to restore the VM 112 from each disk of the primary storage system 106 may be provided by a user to the selective restore engine 134. In other examples, the selective restore engine 134 may calculate the restore time based on the size of the disk to be restored and the data transfer capacity of the network between the backup storage system 108 and the primary storage system 106. In addition, the selective restore engine 134 may keep a record of the restore time and use the recorded restore time to estimate the restore time for restoring the VM 112 from the disk.

[0074] The selective restore engine 134 determines (at 312) whether T RESTORE +T PATCHES <T IMAGE If T RESTORE+T PATCHES Not less than T IMAGE , this means that restoring VM 112 from recovery copy 110 and applying any update patches will take the same amount of time or more time than performing a restore of VM 112 from a selected disk of primary storage system 106. In this case, selective restore engine 134 restores (at 314) VM 112 from the selected disk of primary storage system 106. Note that restoring VM 112 from the selected disk means that the update patches do not have to be applied because the machine-readable instructions stored on the disk (e.g., 152 and / or 154) have been previously patched.

[0075] On the other hand, if T RESTORE +T PATCHES <T IMAGE , the selective restore engine 134 completely restores (at 316) the VM 112 from the recovery copy 110. After completely restoring the VM 112 from the selected recovery copy 110, the selective restore engine 134 applies (at 318) the patch update to the program components used by the restored VM 112. After applying the patch update, the restored VM 112 is available for use in the computer system 102.

[0076] In an example where multiple recovery replicas 110 are available, the selective recovery engine 134 can determine (based on the application of patch updates) which of the recovery replicas 110 will be associated with the least amount of update time. For example, the selective recovery engine 134 can determine that restoring the VM 112 from the first recovery replica 110 will result in the application of a first patch update set, restoring the VM 112 from the second recovery replica 110 will result in the application of a second patch update set, and so on. The selective recovery engine 134 can calculate an update time for the first patch update set, which is the sum of the times to apply the patch updates in the first patch update set. The selective recovery engine 134 can calculate an update time for the second patch update set, which is the sum of the times to apply the patch updates in the second patch update set. The selective recovery engine 134 compares the update times of different patch update sets and selects the recovery replica associated with the patch update set with the least update time.

[0077] In other examples, the selective restore engine 134 may consider the T of each restored copy. RESTORE +T PATCHES For example, for recovery replica 1, T1 = T RESTORE_1 +T PATCHES_1 (where T RESTORE_1 is the time involved in restoring VM 112 from recovery replica 1, and T PATCHES_1is the time to apply any update patches to the restored VM 112 as restored from recovery replica 1). For recovery replica 2, T2 = T RESTORE_2 +T PATCHES_2 (where T RESTORE_2 is the time involved in restoring VM 112 from recovery replica 2, and T PATCHES_2 is the time to apply any update patch to the restored VM 112 as restored from recovery replica 2). For recovery replica M (where M ≥ 2), T M =T RESTORE_M +T PATCHES_M (where T RESTORE_M is the time involved in restoring VM 112 from recovery copy M, and T PATCHES_M is the time to apply any update patches to the restored VM 112 as restored from the recovery replica M). The selective restore engine 134 may compare T1, T2, . . . , T M From T1, T2, ..., T M The shortest time is found among the selected ones, and the recovery copy associated with the shortest time is selected for use.

[0078] After selecting a copy to restore, the selective restore engine 134 may continue to perform tasks 306 - 318 .

[0079] In an alternative example, you can modify Figure 2 The process is to replace tasks 216 and 218 with tasks 306 to 318. In other words, based on Figure 2 During this modification process of the selective restore engine 134, if the selective restore engine 134 determines (at 212) that the storage arrangement of the data 104 indicated by the storage arrangement information 144 matches the storage arrangement of the data in any of the recovery copies 110, the selective restore engine 134 performs a time-based determination (based on the T in the decision block 312). RESTORE +T PATCHES With T IMAGE ), determine whether to perform a full recovery of VM 112 from recovery copy 110 (task 316) or to perform a partial recovery of VM 112 (task 314).

[0080] Figure 4 is a block diagram of a non-transitory machine-readable storage medium or computer-readable storage medium storing machine-readable instructions that, when executed, cause a system to perform various tasks. The system may be, for example, Figure 1 backup / restore system 132, or a different system.

[0081] The machine-readable instructions include a program resume request receiving instruction 402, which is used to receive a request to resume a program. The program to be resumed may be a VM (or a collection of VMs), or any other collection of programs.

[0082] The machine-readable instructions include metadata access instructions 404 for accessing metadata associated with the restored copy of information for the program. Examples of metadata include Figure 1 The program component metadata 148 of the recovery copy is an example of a program component metadata 148. The metadata includes information identifying program components used by the program and versions of the program components. One of the program components is a data management module, such as a file system, a database server, a mapping simplification system, or another type of data management module. In some examples, the version of the data management module indicates the storage arrangement of the data included in the recovery copy.

[0083] The machine-readable instructions include storage arrangement compatibility determination instructions 406 for determining the compatibility of the storage arrangement of the data in the recovery copy with the program based on the metadata. For example, the storage arrangement compatibility determination instructions 406 may determine a first version of a data management module in the recovery copy based on the metadata. The storage arrangement compatibility determination instructions 406 further determine a second version of the data management module used by the current version of the program when the program recovery request is received. The storage arrangement compatibility determination instructions 406 compare the first version of the data management module with the second version to determine the compatibility of the storage arrangement of the data in the recovery copy with the program.

[0084] The machine-readable instructions include restore technique selection instructions 408 for determining whether to fully restore the program or partially restore the program using the restore copy based on the determined compatibility.

[0085] In some examples, restore technique selection instructions 408 determine that a partial restore of the program is to be performed based on determining that a storage arrangement of data in the restore copy is incompatible with the program.

[0086] In some examples, recovery technique selection instructions 408 determine to perform a partial recovery of the program based further on determining that machine-readable instructions of program components used by the program are not corrupted.

[0087] In other examples, restore technique selection instructions 408 determine to perform a partial restore of a program based on: determining that a storage arrangement of data in a restore copy is compatible with the program; calculating a time involved in applying one or more updates to the program after fully restoring the program from the restore copy; and determining, based on the calculated time, that fully restoring the program using the restore copy in combination with applying the one or more updates is less time efficient than restoring the program from images of program components used by the program (e.g., T RESTORE +TPATCHES ≥T IMAGE ).

[0088] In some examples, the partial restoration of the program includes restoring the original data in the recovery copy without restoring the machine-readable instructions of the data management module from the recovery copy.

[0089] In some examples, restore technique selection instructions 408 determine that a full restore of the program is to be performed using the program copy based on determining that the storage arrangement of the data in the restore copy is compatible with the program.

[0090] In some examples, determining to use the recovery copy to perform a full recovery of the program is further based on calculating the time (e.g., T) involved in applying one or more updates to the program after the program is fully recovered from the recovery copy. PATCHES ); and based on the calculated time, determining that fully restoring the program using the recovery copy in combination with applying one or more updates is more time efficient than restoring the program from images of program components used by the program.

[0091] In some examples, determining to use the recovery copy to perform a full recovery of the program is further based on calculating the time involved in restoring the program from the recovery copy (e.g., T RESTORE ); the time involved in applying one or more updates (e.g., T PATCHES ) and the time involved in restoring the program from the recovery copy (for example, T RESTORE ) to produce a total time. Combining the times may refer to summing the times or calculating another mathematical total (e.g., a weighted sum, etc.) of the times. Based on the total time, restore technique selection instructions 408 determines that fully restoring the program using the restoration copy combined with applying one or more updates is more time efficient than restoring the program from images of program components used by the program (e.g., T RESTORE +T PATCHES <T IMAGE ).

[0092] In some examples, the machine-readable instructions store version information about versions of program components used by the program as part of creating a recovery copy of information for the program. The machine-readable instructions identify one or more updates to be applied after restoring the program using the recovery copy based on program vulnerability information associated with the program components and the version information.

[0093] Figure 5 is a block diagram of a system 500 according to some examples. The system 500 may be Figure 1The backup / restore system 132 or another system implemented with one or more computers. The system 500 includes a hardware processor 502 (or multiple hardware processors). The hardware processor may include a microprocessor, a core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, or another hardware processing circuit.

[0094] System 500 also includes storage media 504 that stores machine-readable instructions executable on hardware processor 502 to perform various tasks. Machine-readable instructions executable on a hardware processor may refer to machine-readable instructions executable on a single hardware processor or instructions executable on multiple hardware processors.

[0095] The machine-readable instructions in the storage medium 504 include recovery copy creation instructions 506 for creating a recovery copy of the state of the program. The machine-readable instructions in the storage medium 504 include metadata storage instructions 508 for storing metadata associated with the recovery copy in the memory, the metadata including information about the versions of program components used by the program.

[0096] The machine-readable instructions in the storage medium 504 include program resume request receiving instructions 510 for receiving a request to resume a program. The request may be received from a user or another entity.

[0097] The machine-readable instructions in the storage medium 504 include storage arrangement compatibility determination instructions 512 for determining compatibility of a storage arrangement of data in the recovery copy with the program based on the metadata.

[0098] The machine-readable instructions in storage medium 504 include restore technique selection instructions 514 for determining whether to fully restore the program using a restore copy or partially restore the program using images of program components based on the determined compatibility.

[0099] In some examples, the recovery technology selection instructions 514 determine that a full recovery of the program is to be performed using the recovery copy based on determining that the storage arrangement of data in the recovery copy is compatible with the program; calculating a first time involved in applying one or more updates to the program after fully restoring the program from the recovery copy; and based on the first time, determining that fully restoring the program using the recovery copy in combination with applying the one or more updates is more time efficient than restoring the program from images of program components used by the program.

[0100] In some examples, the recovery copy is a first recovery copy. Recovery technique selection instructions 514 determine to use the first recovery copy to perform a full recovery of the program based on: calculating a second time involved in applying one or more updates to the program after fully recovering the program from a second recovery copy of the state of the program; and determining, based on the first time and the second time, that fully recovering the program using the first recovery copy is more time efficient than fully recovering the program using the second recovery copy.

[0101] Figure 6 is a flow diagram of a process 600 according to some examples. Process 600 may be performed by backup / restore system 132, for example.

[0102] Process 600 includes receiving (at 602) a request to restore a program. Process 600 includes accessing (at 604) metadata associated with a restored copy of information for a program. The metadata includes information identifying program components used by the program and versions of the program components.

[0103] Process 600 includes determining (at 606) compatibility of the storage arrangement of data in the recovery copy with the program based on the metadata. Process 600 performs tasks 608 through 612 based on determining that the storage arrangement of data in the recovery copy is compatible with the program.

[0104] Task 608 includes calculating a first time (eg, T ) involved in fully restoring the program from the recovery copy and applying one or more updates to the program after fully restoring the program from the recovery copy. RESTORE +T PATCHES ).

[0105] Task 610 includes calculating a second time (eg, T ) involved in partially restoring a program from an image of a program component used by the program. IMAGE ).

[0106] Task 612 includes selecting a recovery technique based on the comparison of the first time and the second time from fully recovering the program using the recovery copy or partially recovering the program from an image of a component of the program.

[0107] Storage media (e.g. Figure 4400) may include any one or some combination of the following: a semiconductor memory device, such as DRAM or SRAM, an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and flash memory; a disk, such as a fixed disk, a floppy disk, and a removable disk; another magnetic medium, including a tape; an optical medium, such as a compact disk (CD) or a digital video disk (DVD); or another type of storage device. Note that the instructions discussed above may be provided on one computer-readable or machine-readable storage medium, or alternatively, may be provided on multiple computer-readable or machine-readable storage media distributed in a large system that may have multiple nodes. Such one or more computer-readable or machine-readable storage media are considered to be part of an article (or manufactured article). An article or manufactured article may refer to any manufactured single component or multiple components. One or more storage media may be located in a machine that runs machine-readable instructions, or at a remote site from which machine-readable instructions may be downloaded over a network for execution.

[0108] In the present disclosure, the use of the terms "a", "an" or "the" is also intended to include the plural forms unless the context clearly indicates otherwise. In addition, when used in the present disclosure, the terms "includes / including", "comprises / comprising" or "have / having" specify the presence of stated elements, but do not exclude the presence or addition of other elements.

[0109] In the foregoing description, many details are set forth to provide an understanding of the subject matter disclosed herein. However, embodiments may be practiced without these details. Other embodiments may include modifications and variations of the details discussed above. The appended claims are intended to cover such modifications and variations.

Claims

1. A non-transitory machine-readable storage medium comprising instructions that, when executed, cause a system to: receiving a request to resume the program; accessing metadata associated with the restored copy of information for the program; determining, based on the metadata, compatibility of a storage arrangement of data in the recovery copy with the program; as well as A determination is made based on the determined compatibility whether to fully restore the program or partially restore the program using the restoration copy. 2 . The non-transitory machine-readable storage medium of claim 1 , wherein determining to perform the partial recovery of the program is based on determining that the storage arrangement of the data in the recovery copy is incompatible with the program.

3. The non-transitory machine-readable storage medium of claim 2, wherein determining to perform the partial recovery of the program is further based on: It is determined that machine-readable instructions of a program component used by the program are not corrupted.

4. The non-transitory machine-readable storage medium of claim 1 , wherein determining to perform the partial recovery of the program is based on: determining that the storage arrangement of the data in the recovery copy is compatible with the program; calculating the time involved in applying one or more updates to the program after fully restoring the program from the recovery copy; and Based on the calculated time, it is determined that fully restoring the program using the restoration copy in combination with applying the one or more updates is less time efficient than restoring the program from images of program components used by the program. 5 . The non-transitory machine-readable storage medium of claim 1 , wherein the storage arrangement of the data in the recovery copy is according to a version of a data management module in the recovery copy, the data management module being used to manage access to data in a storage system. 6 . The non-transitory machine-readable storage medium of claim 1 , wherein the storage arrangement of the data in the recovery copy is according to a version of a file system in the recovery copy. 7 . The non-transitory machine-readable storage medium of claim 1 , wherein the storage arrangement of the data in the recovery copy is according to a version of a database server in the recovery copy.

8. A non-transitory machine-readable storage medium according to claim 1, wherein the determination of the compatibility of the storage arrangement of the data in the recovery copy with the program is based on comparing the storage arrangement of the data in the recovery copy with the storage arrangement of data stored in a storage system used by the program.

9. The non-transitory machine-readable storage medium of claim 8, wherein the partial restoration of the program comprises restoring original data in the restoration copy without restoring machine-readable instructions of a data management module from the restoration copy.

10. The non-transitory machine-readable storage medium of claim 1, wherein determining to use the recovery copy to perform the full recovery of the program is based on determining that the storage arrangement of the data in the recovery copy is compatible with the program.

11. The non-transitory machine-readable storage medium of claim 10, wherein determining to use the recovery copy to perform the full recovery of the program is further based on: calculating the time involved in applying one or more updates to the program after fully restoring the program from the recovery copy; and Based on the calculated time, it is determined that fully restoring the program using the restoration copy in combination with applying the one or more updates is more time efficient than restoring the program from images of program components used by the program.

12. The non-transitory machine-readable storage medium of claim 11, wherein determining to use the recovery copy to perform the full recovery of the program is further based on: calculating the time involved in restoring the program from the recovery copy; as well as combining the time involved in applying the one or more updates with the time involved in restoring the program from the recovery copy to produce a total time; as well as Based on the total time, it is determined that fully restoring the program using the restoration copy in combination with applying the one or more updates is more time efficient than restoring the program from the images of the program components used by the program.

13. The non-transitory machine-readable storage medium of claim 12, wherein determining to use the recovery copy to perform the full recovery of the program is further based on: calculating a time to perform the partial restoration of the program, the partial restoration comprising restoring the program from the image of the program components; and It is determined that the total time does not exceed the time to perform the partial recovery.

14. The non-transitory machine-readable storage medium of claim 11, wherein the instructions, when executed, cause the system to: storing, as part of creating the restored copy of information for the program, version information relating to versions of the program components used by the program; The one or more updates to be applied after restoring the program using the recovery copy are identified based on program vulnerability information associated with the program components and the version information.

15. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions, when executed, cause the system to: In response to determining that the program is to be fully restored using the recovery copy: restoring the program to a previous state using the recovery copy; and One or more update patches are applied to the program restored to the previous state.

16. A system, comprising: Hardware processor; and a non-transitory machine-readable storage medium storing instructions executable on the hardware processor to: Create a restored copy of the program's state; storing metadata associated with the restored copy in a memory, the metadata including information about versions of program components used by the program; receiving a request to resume the program; determining, based on the metadata, compatibility of a storage arrangement of data in the recovery copy with the program; as well as Based on the determined compatibility, a determination is made whether to fully restore the program using the restored copy or to partially restore the program using the images of the program components.

17. The system of claim 16, wherein determining to use the recovery copy to perform the full recovery of the program is based on: determining that the storage arrangement of the data in the recovery copy is compatible with the program; calculating a first time involved in applying one or more updates to the program after fully restoring the program from the recovery copy; and Based on the first time, it is determined that fully restoring the program using the restoration copy in combination with applying the one or more updates is more time efficient than restoring the program from the images of the program components used by the program.

18. The system of claim 17, wherein the recovery copy is a first recovery copy, and wherein determining to use the first recovery copy to perform the full recovery of the program is based on: calculating a second time involved in applying one or more updates to the program after fully restoring the program from a second restored copy of the state of the program; and It is determined based on the first time and the second time that fully restoring the program using the first restoration copy is more time efficient than fully restoring the program using the second restoration copy.

19. A method comprising: receiving, at a system including a hardware processor, a request to resume a program; accessing, by the system, metadata associated with a restored copy of information for the program; determining, based on the metadata, compatibility of a storage arrangement of data in the recovery copy with the program; as well as Based on determining that the storage arrangement of the data in the recovery copy is compatible with the program: calculating a first time involved in fully restoring the program from the recovery copy and applying one or more updates to the program after fully restoring the program from the recovery copy; calculating a second time involved in partially restoring the program from an image of a program component used by the program; as well as Based on a comparison of the first time and the second time, a recovery technique is selected by the system from fully restoring the program using the recovery copy or partially restoring the program from the image of the program component.

20. The method of claim 19, wherein the recovery copy includes data and executable machine-readable instructions for the program.

Citation Information

Patent Citations

  • Remote backup system and remote backup method thereof

    CN103916449A

  • Realizing method and system for automatic restoring equipment fault

    CN1859162A

  • User selectable data source for data recovery

    US10235392B1

  • Backing up and / or restoring a software application so as to facilitate compatibility checking with a target device prior to application restore

    US20100325167A1