Intelligent recovery of file system using destination aware recovery
Through the intelligent destination-aware recovery method, the backup metadata and local file system capabilities are used to solve the problem of redundant data replication in file system data recovery on the host, and the recovery efficiency is improved.
Patent Information
- Application Number
- CN202411352269.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-09-29
- Filing Date
- 2024-09-26
- Publication Date
- 2025-04-01
AI Technical Summary
When restoring file system data on the host, the existing technology has the problem of redundant data replication, which leads to wasted time and resources and affects recovery efficiency.
Optimize the file system recovery process through intelligent destination-aware recovery methods, leverage intelligent and rich backup metadata, destination metadata and file system local capabilities, such as block cloning.
Reduces the time and compute resources required for recovery, and improves the efficiency of file system recovery from the backup storage target to perform hosts.
Smart Images

Figure CN119739558A_ABST
Abstract
Description
Background Art
[0001] A computing device may provide services to a user. To provide services, a computing device may generate data. A computing device may provide data and obtain data from other computing devices. The data may be important to the user. A data protection service may be performed to protect the data. The data protection service may include generating a backup of the data on one computing device and storing the backup on another computing device. The backup may be used to recover lost data. Summary of the invention
[0002] In general, in one aspect, the embodiments disclosed herein relate to a method for performing recovery of file system data on a host. The method includes identifying, by a data protection agent of the host, a recovery event associated with a file system of the host; in response to identifying the recovery event: obtaining backup metadata associated with a backup of the file system, wherein the backup metadata includes previously generated checksums of files included in the file system when the backup was generated; obtaining current file system metadata associated with the file system from a file system metadata repository on a storage device of the host; generating current checksums of the files of the file system using the current file system metadata; identifying non-matching files and matching files using the previously generated checksums and the current checksums; storing local copies of the matching files on the host to restore the matching file; obtain a current data run associated with the non-matching file from the current file system metadata; obtain a backup data run associated with the non-matching file from the backup metadata; based on the current data run and the backup data run, identify a matching portion of the non-matching file, a non-matching portion of the non-matching file, and a completely unique file of the non-matching file; store a local copy of the matching portion of the non-matching file on the host to restore the matching portion of the non-matching file; and restore the completely unique file of the non-matching file and the non-matching portion of the non-matching file from a backup storage device including the backup.
[0003] In general, in one aspect, the present invention relates to a method for performing recovery of file system data on a host. The method includes identifying, by a data protection agent of a host, a recovery event associated with a file system of the host; in response to identifying the recovery event: obtaining backup metadata associated with a backup of the file system, wherein the backup metadata specifies data of files included in the file system when the backup was generated; obtaining current file system metadata associated with the file system from a file system metadata repository on a storage device of the host; identifying non-matching files and matching files using the backup metadata and the current file system metadata; storing a local copy of the matching file on the host to recover the matching file; identifying matching portions of the non-matching files, non-matching portions of the non-matching files, and completely unique files of the non-matching files based on the current file system metadata and the backup metadata; storing a local copy of the matching portion of the non-matching files on the host to recover the matching portion of the non-matching files; and recovering the completely unique files of the non-matching files and the non-matching portions of the non-matching files from a backup storage device including the backup.
[0004] In general, in one aspect, the present invention relates to a non-transitory computer readable medium including a computer readable program code that, when executed by a computer processor, enables the computer processor to perform a method for recovering file system data on a host. The method includes identifying, by a data protection agent of a host, a recovery event associated with a file system of the host; in response to identifying the recovery event: obtaining backup metadata associated with a backup of the file system, wherein the backup metadata specifies data of files included in the file system when the backup was generated; obtaining current file system metadata associated with the file system from a file system metadata repository on a storage device of the host; identifying non-matching files and matching files using the backup metadata and the current file system metadata; storing a local copy of the matching file on the host to restore the matching file; identifying a matching portion of the non-matching file, a non-matching portion of the non-matching file, and a completely unique file of the non-matching file based on the current file system metadata and the backup metadata; storing a local copy of the matching portion of the non-matching file on the host to restore the matching portion of the non-matching file; and restoring the completely unique file of the non-matching file and the non-matching portion of the non-matching file from a backup storage device including the backup.
[0005]
[0011] Other aspects of the embodiments disclosed herein will become apparent from the following description and the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Certain embodiments of the present invention will be described with reference to the accompanying drawings. However, the drawings only illustrate certain aspects or implementations of the present invention by way of example and are not meant to limit the scope of the claims.
[0007] Figure 1A A diagram of a system according to one or more embodiments disclosed herein is shown.
[0008] Figure 1B A diagram of a host computer according to one or more embodiments disclosed herein is shown.
[0009] Figure 1C A diagram of a data protection manager is shown in accordance with one or more embodiments disclosed herein.
[0010] Figure 2A A flow chart of a method for generating a backup according to one or more embodiments disclosed herein is shown.
[0011] Figure 2B A flow chart of a method for performing intelligent recovery operations according to one or more embodiments disclosed herein is shown.
[0012] Figure 3A A flow chart of a method for performing discovery during a backup access service is shown in accordance with one or more embodiments disclosed herein.
[0013] Figure 3B A flow chart of a method for performing backup access services according to one or more embodiments disclosed herein is shown.
[0014] Figure 4A A flow chart of a method for performing protection policy validation according to one or more embodiments disclosed herein is shown.
[0015] Figure 4B A flow chart of a method for generating dependency information according to one or more embodiments disclosed herein is shown.
[0016] Figure 5A A flow chart of a method for performing a full backup by exclusion according to one or more embodiments disclosed herein is shown.
[0017] Figure 5B A flow chart of a method for performing incremental backup by exclusion according to one or more embodiments disclosed herein is shown.
[0018] Fig. 6AA flow chart of a method for performing a full image backup through indexing according to one or more embodiments disclosed herein is shown.
[0019] Figure 6B A flow chart of a method for performing incremental image backup through indexing according to one or more embodiments disclosed herein is shown.
[0020] Figure 7 A flow chart of a method for performing a virtual full synthetic backup through post-processing according to one or more embodiments disclosed herein is shown.
[0021] Figure 8 A diagram of a computing device is shown according to one or more embodiments disclosed herein. DETAILED DESCRIPTION
[0022] Specific embodiments will now be described with reference to the accompanying drawings. In the following description, numerous details are set forth as examples of the embodiments disclosed herein. It will be appreciated by those skilled in the art that one or more embodiments disclosed herein may be practiced without these specific details, and that numerous changes or modifications are possible without departing from the scope of the embodiments disclosed herein. In order to avoid obscuring the description, certain details known to those of ordinary skill in the art have been omitted.
[0023] In the following description of the drawings, any component described with respect to the drawings may be equivalent to one or more similarly named components described with respect to any other drawings in the various embodiments disclosed herein. For the sake of brevity, the description of these components will not be repeated with respect to each drawing. Therefore, each embodiment of the components of each drawing is incorporated by reference and is assumed to be optionally present in each other drawing with one or more similarly named components. In addition, according to the various embodiments disclosed herein, any description of the components of the drawings should be interpreted as an optional embodiment, which can be implemented in addition to, in conjunction with, or in place of the corresponding similarly named component descriptions in any other drawings.
[0024] Throughout this application, the elements of the drawings may be labeled A to N. As used herein, the aforementioned labels mean that the element may include any number of items and do not require that the element include the same number of elements as any other item labeled A to N. For example, a data structure may include a first element labeled A and a second element labeled N. This labeling convention means that the data structure may include any number of elements. The second data structure, also labeled A to N, may also include any number of elements. The number of elements of the first data structure and the number of elements of the second data structure may be the same or different.
[0025] Generally speaking, embodiments of the present invention relate to methods, systems, and non-transitory computer-readable media for performing intelligent recovery.
[0026] When restoring a file system on a host from a backup storage target, the host or a component thereof (e.g., a data protection agent) may copy all data from each file included in the file system from the backup target storage device to the host itself. There may be situations where the same data is copied over and over again from the backup target to the host. For example, multiple folders in a file system may include the same files with the same data. When restoring all or part of a file system, when the data of a file may currently reside on the host due to a previous recovery or the data of the file has been copied during the current recovery, the host may continuously copy the data of the file from the backup storage target to the host. Redundantly copying data from the backup storage target to the host may waste time and storage space, network bandwidth, and / or other computing resources on the host, and may hinder the host from performing other computer-implemented services.
[0027] To at least partially address the aforementioned problems discussed above, embodiments disclosed herein relate to systems, methods, and / or non-transitory computer-readable media that implement intelligent destination-aware recovery of a file system. More specifically, embodiments disclosed herein can utilize intelligent and rich backup metadata, destination metadata, and native capabilities of a file system (e.g., block cloning) to perform recovery of a file system on a host from a backup storage device. As a result, the time and computing resources required to perform recovery can be minimized, thereby improving the efficiency of performing file system recovery on a host from a backup storage target.
[0028] Figure 1A A diagram of a system according to one or more embodiments disclosed herein is shown. The system may include a host (100), a data protection manager (120), and a backup storage device (130). Without departing from the embodiments disclosed herein, Figure 1A The devices may be operably connected to each other and / or to other entities (not shown) via any combination of wired networks (e.g., Ethernet) and / or wireless networks (e.g., local area networks, wide area networks, the Internet, etc.). Figure 1A Each component of the system is shown in .
[0029] In one or more embodiments, the host (100) can be implemented using one or more computing devices. The computing device can be, for example, a mobile phone, a tablet computer, a laptop computer, a desktop computer, a server, a distributed computing system, or a cloud resource. The computing device can include one or more processors, a memory (e.g., a random access memory), and a persistent storage device (e.g., a disk drive, a solid-state drive, etc.). The persistent storage device can store computer instructions, such as computer code, which (when executed by a processor of the computing device) causes the computing device to perform the functions of the host (100) described herein and / or to perform operations on the computing device. FIG. 2A to FIG. 3B All or part of the method shown in . Without departing from the embodiments disclosed herein, the host (100) can be implemented using other types of computing devices. For additional details about the computing device, refer to Figure 4.
[0030] Without departing from the embodiments disclosed herein, the host (100) may be implemented using logical devices. For example, the host (100) may include a virtual machine that utilizes the computing resources of any number of physical computing devices to provide the functionality of the host (100). Without departing from the embodiments disclosed herein, the host (100) may be implemented using other types of logical devices.
[0031] In one or more embodiments, the host (100) may include functionality for performing computer-implemented services to users of the host (100), or may be otherwise programmed or configured to perform computer-implemented services to users of the host. Cloud services may include email communication services, database services, calendar services, reasoning services, and / or word processing services. Without departing from the embodiments disclosed herein, computer-implemented services may include other and / or additional types of services. The host (100) may also include functionality for performing local data protection services. Local data protection services may include generating backups, generating backup metadata, providing backups to a backup storage device (130), providing backup metadata to a data protection manager (120), and performing backup access services (also known as application instant access). Without departing from the embodiments disclosed herein, local data protection services may include other and / or additional services. The host (100) may include functionality for performing local data protection services. FIG. 2A to FIG. 3B The host (100) may include other and / or additional functionality without departing from the embodiments disclosed herein. For additional information about the host, refer to Figure 1B .
[0032] In one or more embodiments, the data protection manager (120) can be implemented using one or more computing devices. The computing device can be, for example, a mobile phone, a tablet computer, a laptop computer, a desktop computer, a server, or a cloud resource. The computing device can include one or more processors, memory (e.g., random access memory), and a persistent storage device (e.g., a disk drive, a solid-state drive, etc.). The persistent storage device can store computer instructions, such as computer code, which (when executed by a processor of the computing device) causes the computing device to perform the functions described herein and / or to perform operations in a manner that is consistent with the present invention. FIG. 2A to FIG. 3B All or part of the method shown in . Without departing from the embodiments disclosed herein, the data protection manager ( 120 ) may be implemented using other types of computing devices. For additional details about the computing device, refer to FIG. 4 .
[0033] In one or more embodiments, the data protection manager (120) may be implemented using logic devices without departing from the embodiments disclosed herein. For example, the data protection manager (120) may include a virtual machine that utilizes computing resources of any number of physical computing devices to provide the functionality of the data protection manager (120). The data protection manager (120) may be implemented using other types of logic devices without departing from the embodiments disclosed herein.
[0034] In one or more embodiments, the data protection manager (120) may include functionality for performing data protection management services on data generated on the host (100), or may be otherwise programmed or configured to perform data protection management services on the data. The data protection management services may include: (i) initiating the performance of the data protection services by a data protection agent (discussed below) executing on the host based on user requests and / or protection policies, (ii) maintaining backup metadata associated with the backups, and (iii) generating and providing a user interface that provides a user with an item-level view of the backups based on the backup metadata.
[0035] The data protection management service may include other and / or additional services without departing from the embodiments disclosed herein. The data protection manager (120) may include a device for performing FIG. 2A to FIG. 3B The data protection manager (120) may include other and / or additional functionality without departing from the embodiments disclosed herein. For additional information about the data protection manager (120), refer to Figure 1C .
[0036] In one or more embodiments, the backup storage device (130) can be implemented using one or more computing devices. The computing device can be, for example, a mobile phone, a tablet computer, a laptop computer, a desktop computer, a server, a distributed computing system, or a cloud resource. The computing device can include one or more processors, a memory (e.g., a random access memory), and a persistent storage device (e.g., a disk drive, a solid-state drive, etc.). The persistent storage device can store computer instructions, such as computer code, which (when executed by a processor of the computing device) causes the computing device to perform the functions of the backup storage device (130) described herein and / or to perform operations on the backup storage device (130). FIG. 2A to FIG. 3B All or part of the method shown in . Without departing from the embodiments disclosed herein, the backup storage device (130) can be implemented using other types of computing devices. For additional details about the computing device, refer to Figure 4.
[0037] Without departing from the embodiments disclosed herein, the backup storage device (130) may be implemented using logical devices. For example, the backup storage device (130) may include a virtual machine that utilizes the computing resources of any number of physical computing devices to provide the functionality of the backup storage device (130). Without departing from the embodiments disclosed herein, the backup storage device (130) may be implemented using other types of logical devices.
[0038] In one or more embodiments, the backup storage device (130) may include functionality for obtaining and storing backups generated on the host computer (100), or may be otherwise programmed or configured to obtain and store such backups. The backup storage device (130) may also include functionality for providing all or part of the backups stored on the backup storage device (130) to the host computer (100) for item-level recovery or item-level access purposes. The backup storage device (130) may include functionality for performing FIG. 2A to FIG. 3B The backup storage device (130) may include other and / or additional functionality without departing from the embodiments disclosed herein.
[0039] In one or more embodiments disclosed herein, the backup storage device (130) may include one or more backup storage devices. Without departing from the embodiments disclosed herein, the backup storage device (130) may include any number of backup storage devices. In one or more embodiments, the backup storage device in the backup storage device (130) may include a backup storage type. Without departing from the embodiments disclosed herein, the backup storage device (130) may include any number and / or combination of backup storage types. Each backup storage type may be associated with a specific backup storage format or backup storage functionality. The backup storage type may include a block-based backup storage device, a file system-based backup storage device, and / or an object-based backup storage device. A block-based backup storage device may store a backup as one or more data blocks. A file system-based backup storage device may store a backup as one or more files and / or folders. An object-based backup storage device may store a backup as one or more objects. Without departing from the embodiments disclosed herein, other and / or additional types of backup storage devices may be included in the backup storage device (130).
[0040] Although Figure 1A The system is shown as having a certain number of components (e.g., 100, 120, 130), but in other embodiments disclosed herein, the system may have more or fewer components. For example, the functionality of each of the above components may be split across components or combined into a single component. Further, each component may be utilized multiple times to perform iterative operations.
[0041] Figure 1B A diagram of a host according to one or more embodiments disclosed herein is shown. The host (100) may be the host (100, Figure 1A ) embodiments. As discussed above, the host (100) may include functionality for performing computer-implemented services and local data protection services. To perform the aforementioned services, the host (100) may include a virtual machine (102), an application (104), a data protection agent (106), and a storage device (108). Without departing from the embodiments disclosed herein, the host (100) may include other, additional and / or fewer components. For example, if multiple applications require different backup generation functionality, the host may include multiple data protection agents. As another example, the host may include multiple virtual machines. Each of the aforementioned components of the host (100) is discussed below.
[0042] In one or more embodiments disclosed herein, the virtual machine (102) is implemented as computer instructions, such as computer code, stored on a storage device (e.g., 108), which, when executed by a processor of a host (100), causes the host (100) to provide the functionality of the virtual machine (102) described throughout this detailed description. The virtual machine may include functionality for performing computer-implemented services or otherwise providing computer-implemented services to a user. The virtual machine may include other and / or additional functionality without departing from the embodiments disclosed herein. The virtual machine may be managed by a hypervisor (e.g., computing instructions executed on the host (100)) (not shown). The hypervisor may be a Hyper-V hypervisor. The hypervisor may generate image backups (full and incremental) of the VM (102) executed on the host (100). The virtual machine (102) may include one or more applications (104). Each application may be a portion of the computer instructions discussed above, which, when executed by a processor of the host (100), causes the host (100) to perform a portion of the computer-implemented service performed by the virtual machine (102). For example, a database application may perform database services, a word processing application may perform word processing services, and an email communication application may perform email communication services, etc.
[0043] In one or more embodiments disclosed herein, the data protection agent (106) can be implemented as a physical device. The physical device can include a circuit system. The physical device can be, for example, a field programmable gate array, an application specific integrated circuit, a programmable processor, a microcontroller, a digital signal processor, or other hardware processor. The physical device can be configured to provide the functionality of the data protection agent (106) described throughout this specific embodiment.
[0044] In one or more embodiments disclosed herein, the data protection agent (106) is implemented as computer instructions, such as computer code, stored on a storage device (e.g., 108), which, when executed by a processor of a host (100), causes the host (100) to provide the functionality of the data protection agent (106) described throughout this specific embodiment.
[0045] In one or more embodiments disclosed herein, the data protection agent (106) is implemented using one or more external computing devices. Figure 1A or Figure 1B Such implementation is not shown in the system of FIG, but one or more computing devices may be operably connected to the host (100), thereby enabling the data protection manager to remotely interact with the host (100). For additional information about computing devices, refer to the above Figure 1Aor the discussion below regarding Figure 4.
[0046] In one or more embodiments, the data protection agent (106) may include functionality for performing the aforementioned local data protection services for the host (100). To perform the local data protection services, the data protection agent (106) may receive data from the data protection manager (120, Figure 1A ) obtains the request and information, and in the backup storage device (130, Figure 1A ) sends and responds to commands between the virtual machine (102) and the application (104). Sending and responding commands may result in execution of FIG. 2A to FIG. 3B The commands may be associated with an Internet protocol, such as, for example, the Internet Small Computer System Interface (iSCSI). For additional information about the functionality of the data protection agent (106), see FIG. 2A to FIG. 3B All or part of the method shown in .
[0047] In one or more embodiments, the storage device (108) may be implemented using one or more volatile or non-volatile storage devices or any combination thereof. The storage device (108) may include functionality for storing and providing all or part of information that may be used by the virtual machine (102), the application (104), and / or the data protection agent (106), or may be otherwise configured to store and provide all or part of the information. The information stored in the storage device (108) may include a file system data repository (110) and a file system metadata repository (112). The storage device may include other and / or additional information without departing from the embodiments disclosed herein. Each of the aforementioned types of information is discussed below.
[0048] In one or more embodiments disclosed herein, an application (104) and / or a user of the application (104) generates data during execution of a computer-implemented service. The data may be stored in a file system. In one or more embodiments disclosed herein, a file system is an organizational data structure that tracks how application data is stored and retrieved in a system (e.g., in a storage device (108) of a host (100), i.e., a file system data repository (110)). The file system may specify references to assets of an application and any asset data associated with each asset. An asset may be a single data object in a file system. An asset may be, for example, a folder associated with an application (e.g., 102). Each asset may include any number of elements. An element may be, for example, a subfolder and / or file associated with an application (e.g., 102). Each file may include file data. File data may include, for example, database data, calendar data, email communication data, and the like.
[0049] In one or more embodiments, the file system data repository (110) may include one or more data structures that can be used to generate a backup. The file system data repository (110) may include file data generated by the application (104) and / or the user of the application (104), as discussed above. Without departing from the present invention, the file data may be any type of data generated by the user of the application (104), such as database data and email data. Each of the applications (104) may be associated with any number of assets (e.g., files, folders, etc.), each asset may include any number of file data, and further, without departing from the embodiments disclosed herein, each asset may include any number of elements. When obtaining a computer-implemented service from the host (100), the user and / or the application (104) may use the file data of the file system data repository (110). In addition, the file data of the file system data repository (110) may be obtained by the data protection agent (106) to generate a backup. Without departing from the embodiments disclosed herein, the file data of the file system data repository (110) may be used by other and / or additional entities for other and / or additional purposes. Furthermore, the file system data repository (110) may include other and / or additional types of information without departing from the embodiments disclosed herein.
[0050] In one or more embodiments, the file system metadata repository (112) may include one or more data structures that include information about files included in the file system stored in the file system data repository (110). The information may include, for example, an entry for each file, the entry including: a file identifier associated with the file, a file length or size, one or more data runs associated with one or more data blocks of the file, a data block identifier associated with one or more data blocks of the file, a creation date, a modification date, an application identifier associated with the file, and a parent file or folder associated with the file. Without departing from the embodiments disclosed herein, the file system metadata repository (112) may include other and / or additional information associated with the files stored in the file system data repository (110). The file system metadata repository (112) may be used by a user of the application (104) and / or the application (104) during execution of a computer-implemented service. The data protection agent (106) may use the file system metadata repository (112) to generate backup metadata (discussed below). The information included in the file system metadata repository (112) may be generated by the application (104) and / or a user of the application (104) during execution of a computer-implemented service and stored in the file system metadata repository (112).
[0051] Although data structures (e.g., 110, 112) and other data structures mentioned in this detailed description are shown / discussed as separate data structures and have been discussed as including a limited amount of specific information, any of the aforementioned data structures may be divided into any number of data structures, combined with any number of other data structures, and may include additional, less, and / or different information without departing from the embodiments disclosed herein. In addition, although shown as being stored in a storage device (108), any of the aforementioned data structures may be stored in different locations (e.g., in storage devices of other computing devices) and / or across any number of computing devices without departing from the embodiments disclosed herein. The data structures discussed in this detailed description may be implemented using, for example, file systems, lists, linked lists, tables, unstructured data, databases, etc.
[0052] Figure 1C A diagram of a data protection manager according to one or more embodiments disclosed herein is shown. The data protection manager (120) may be the data protection manager (120, Figure 1A) embodiments. As discussed above, the data protection manager (120) may include functionality for performing data protection management services. To perform the aforementioned services, the data protection manager (120) may include a data protection manager controller (122) and a storage device (124). The data protection manager (120) may include other, additional, and / or fewer components without departing from the embodiments disclosed herein. Each of the aforementioned components of the data protection manager (120) is discussed below.
[0053] In one or more embodiments disclosed herein, the data protection manager controller (122) may be implemented as a physical device. The physical device may include circuitry. The physical device may be, for example, a field programmable gate array, an application specific integrated circuit, a programmable processor, a microcontroller, a digital signal processor, or other hardware processor. The physical device may be configured to provide the functionality of the data protection manager controller (122) described throughout this detailed description.
[0054] In one or more embodiments disclosed herein, the data protection manager controller (122) is implemented as computer instructions, such as computer code, stored on a storage device (e.g., 124), which, when executed by a processor of the data protection manager (120), causes the data protection manager (120) to provide the functionality of the data protection manager controller (122) described throughout this specific embodiment.
[0055] In one or more embodiments, the data protection manager controller (122) may include functionality for performing the aforementioned data protection management services. To perform the data protection management services, the data protection manager controller (122) may provide data protection agents (106, Figure 1B ) to initiate the generation of backup and backup access services. The data protection manager controller (122) may execute FIG. 2A to FIG. 3B For additional information regarding the functionality of the data protection manager controller (122), see FIG. 2A to FIG. 3B All or part of the method shown in .
[0056] In one or more embodiments, the storage device (124) may be implemented using one or more volatile or non-volatile storage devices or any combination thereof. Without departing from the embodiments disclosed herein, the storage device (124) may include functionality for storing and providing all or part of information that may be used by users of the system and the data protection agent (106) to perform backup access services and / or other data protection services, or may be otherwise configured to store and provide all or part of the information. The information stored in the storage device (124) may include a backup metadata repository (126). Without departing from the embodiments disclosed herein, the storage device (124) may include other and / or additional information.
[0057] In one or more embodiments, the backup metadata repository (126) may include one or more data structures including information about the backup metadata repository (126) on the host (100, Figure 1A ). For example, for each backup, the information may include a backup identifier, a backup generation timestamp, and a storage location included in the backup storage device. For each file in the backup, the information may also include: a file identifier associated with the file, a file name associated with the file, a file length or size, a checksum (discussed below), a data run, an application identifier associated with the file, and a parent file or folder associated with the file. The information may further include application information associated with the backup, such as an application identifier, an application name, and an application type (e.g., a database application, a word processing application, etc.).
[0058] The backup metadata repository (126) may include a Figure 1A ) associated with the backup of data generated on the backup metadata repository (126). The backup metadata repository (126) can be used by the data protection agent (106, Figure 1B ) is used during the execution of backup access services. The information included in the backup metadata repository (126) can be used by the data protection agent (106, Figure 1B ) is generated during backup generation and backup access services and stored in the backup metadata repository (126).
[0059] Although data structures (e.g., 126) and other data structures mentioned in this detailed description are shown / discussed as separate data structures and have been discussed as including a limited amount of specific information, any of the aforementioned data structures may be divided into any number of data structures, combined with any number of other data structures, and may include additional, less, and / or different information without departing from the embodiments disclosed herein. In addition, although shown as being stored in a storage device (124), any of the aforementioned data structures may be stored in different locations (e.g., in storage devices of other computing devices) and / or across any number of computing devices without departing from the embodiments disclosed herein. The data structures discussed in this detailed description may be implemented using, for example, file systems, lists, linked lists, tables, unstructured data, databases, etc.
[0060] Figure 2A A flow chart of a method for generating a backup according to one or more embodiments disclosed herein is shown. Figure 2A The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 2A All or part of the method. Figure 2A Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0061] Initially, in step 200, a backup generation event associated with an application is identified. In one or more embodiments, a data protection agent may obtain a request to generate a backup from a data protection manager. The data protection agent may identify the receipt of the request as a backup generation event. The request may include an application identifier associated with the application to which the request is directed. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices that will store the backup to be generated. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation. In one or more embodiments, the data protection manager may send the request based on a protection policy associated with an application or a file system. The protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a time point for generating a backup, backup storage information associated with one or more backup storage devices for storing a backup and / or a portion of a backup, etc.). The protection policy may be generated by a user and provided to a data protection manager, which may monitor the protection policy to initiate the execution of a data protection service according to the backup requirements specified by the protection policy.
[0062] In another embodiment, the data protection manager may send a backup generation request in response to an on-demand backup generation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand backup generation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand backup generation request may include backup storage information associated with one or more backup storage devices used to store backups and / or portions of backups, and / or other information associated with the backup generation.
[0063] A backup generation event associated with an application may be identified via other and / or additional methods without departing from the embodiments disclosed herein.
[0064] In step 202, file system metadata associated with the application is obtained. As discussed above, the storage device of the host may include a file system metadata repository that stores information associated with files included in the host file system generated by users and / or applications of the host during execution of computer-implemented services. The data protection agent can obtain file system metadata associated with the application (for application-specific backups) or for the entire file system (for file system backups) from the file system metadata repository. The data protection agent can use an application identifier to obtain file system metadata associated with the application. The data protection agent can use other appropriate methods, frameworks, or techniques to obtain file system metadata and other information about the host's application (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, file system metadata associated with the application can be obtained via other and / or additional methods.
[0065] In step 204, a backup of the file system data is generated. In one or more embodiments, without departing from the embodiments disclosed herein, the data protection agent may use any suitable technique to generate a backup of the file system (or files of the file system associated with the application). For example, the data protection agent may generate or initiate the generation of a snapshot of the file system, where the snapshot of the file system is a backup of the file system or the application. Without departing from the embodiments disclosed herein, backups of the file system data may be generated via other and / or additional methods.
[0066] In step 206, backup metadata is generated based on the file system metadata and the backup. In one or more embodiments, the data protection agent can generate backup metadata based on the backup and the file system metadata. The data protection manager can generate and include checksums (discussed below) associated with the files included in the backup, and include the checksums in the backup metadata. The data protection agent can generate a backup metadata file and include all or part of the file system metadata in the backup metadata file. Thus, for each file, the backup metadata may include a file identifier associated with the file, a file name associated with the file, data runs associated with each file, an application identifier associated with the file, and a parent file or folder associated with the file. Without departing from the embodiments disclosed herein, the backup metadata may include other and / or additional information.
[0067] In one or more embodiments, a data run may be associated with a data block of a file. Each file may include one or more data blocks. A data run may include an offset and a data block range. An offset may refer to one or more data structures that specify a distance from a reference point in a backup storage device based on a file system, and the backup storage device based on a file system includes a starting point of a file in a storage volume (e.g., a virtual hard disk on a host or a backup storage device). A distance may refer to the number of physical addresses or the amount of data (e.g., bytes) between a reference point in a storage device and a starting point of a file. A reference point may be a physical address of a first file including a backup, or a base address in a storage device. Since backups may be stored according to a hierarchical structure of files included in a backup storage device, an offset may be used to collect only explicitly requested files in a backup during a backup access service. An offset may be derived from the backup itself or file system metadata (e.g., a parent file identifier and the size or length of each file). Without departing from the embodiments disclosed herein, an offset may include other and / or additional information.
[0068] In one or more embodiments, a data block range may refer to one or more data structures that specify where data blocks and / or portions of data blocks of block-based backup and files start and end in a host's storage device and / or backup storage device. The data block range may be obtained by a data protection agent based on file system metadata and / or backup. The data block range may be a pointer to the location where a portion of a data block or data block backed up in a reference backup storage device starts and ends. The data block range may be used to identify and obtain specific data blocks for block-based backup. Each data block range in the data block range may be associated with a backed-up data block or portion of a data block. Each data block range may be mapped to a file identifier of a file in a file system or otherwise associated with the file identifier. Without departing from the embodiments disclosed herein, the data block range may include other and / or additional information and may be used for other and / or additional purposes.
[0069] The data protection agent may also include backup information in the backup metadata, which may include an assigned backup identifier associated with the backup, a creation timestamp associated with the backup, and a target backup storage device for the backup (e.g., as specified by a backup request obtained from the data protection manager). If more than one backup storage device is used to store portions of the backup, the backup metadata file may be updated to include multiple instances of backup information associated with each backup storage device. Without departing from the embodiments disclosed herein, backup metadata may be generated based on file system metadata and backups via other and / or additional methods.
[0070] In step 208, the backup is stored in a backup storage device. In one or more embodiments, the data protection agent sends the backup or backup portion to the backup storage device along with a request to store the backup or backup portion. In response to obtaining the backup and the request, the backup storage device stores the backup in the backup storage device. The backup may also include a copy of the backup metadata. Without departing from the embodiments disclosed herein, the backup and the request may be provided to the backup storage device using any appropriate data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the backup storage device, the data protection agent may transmit the backup and the request as a message comprising one or more network packets. Without departing from the embodiments disclosed herein, the backup may be stored in the backup storage device via other and / or additional methods.
[0071] In step 210, the backup metadata is sent to the data protection manager. In one or more embodiments, the data protection agent sends the backup metadata to the data protection manager along with a request to store the backup metadata. In response to obtaining the backup metadata and the request, the data protection manager stores the backup metadata in a backup metadata repository. Without departing from the embodiments disclosed herein, the backup metadata and the request may be provided to the data protection manager using any suitable data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection agent may transmit the backup metadata and the request as a message comprising one or more network packets. Without departing from the embodiments disclosed herein, the backup metadata may be sent to the data protection manager via other and / or additional methods.
[0072] In one or more embodiments, the method ends after step 210 .
[0073] Figure 2B A flow chart of a method for performing intelligent recovery operations according to one or more embodiments disclosed herein is shown. Figure 2B The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 2B All or part of the method. Figure 2B Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0074] Initially, in step 220, a recovery event associated with a file system on a host is identified. In one or more embodiments, a data protection agent may obtain a request to restore an application on a host from a data protection manager. The data protection agent may identify the receipt of a request as a recovery event. The request may include an application identifier associated with the application to which the request is directed. In one embodiment, the request may also include a backup identifier associated with a backup that the user wishes to use to perform the recovery. Alternatively, in another embodiment, the data protection agent may use only the most recently generated backup associated with the application. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices, in which the latest backup associated with the application is stored. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation.
[0075] In one or more embodiments, the data protection manager may send a recovery request in response to an on-demand recovery initiation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand recovery initiation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand recovery initiation request may include backup storage information associated with one or more backup storage devices, the one or more backup storage devices including the latest backup associated with the application and / or portions of the backup and / or other information associated with recovery of the application.
[0076] In step 222, backup metadata associated with the backup of the file system is obtained. In one or more embodiments, the data protection agent sends a request for backup metadata associated with the backup associated with the application to the data protection manager. The request may include an application identifier associated with the application and / or a backup identifier associated with the backup corresponding to the application. In response to obtaining the above, the data protection manager obtains the backup metadata associated with the latest backup of the application or the backup specified by the backup identifier and sends the backup metadata to the data protection agent. Without departing from the embodiments disclosed herein, any appropriate data transmission method can be used to provide backup metadata and requests to and from the data protection agent. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection agent can transmit the request as a message including one or more network packets. In addition, by operably connecting the data protection agent and one or more network devices of the data protection manager, the data protection manager can transmit the backup metadata as a message including one or more network packets. Without departing from the embodiments disclosed herein, the backup metadata associated with the backup can be obtained from the data protection manager via other and / or additional methods.
[0077] In step 224, current file system metadata associated with current file system data stored on the host is obtained. As discussed above, the storage device of the host may include a file system metadata repository that stores information associated with files included in the host file system generated by a user and / or application of the host during execution of a computer-implemented service. The current file system metadata may be associated with the current state of the file system. In other words, the current file system metadata may be associated with current data stored in the file system on the host, while the backup metadata may be associated with a backup of a previous state of the file system (or a portion of the file system associated with the application). The data protection agent may obtain the current file system metadata associated with the application (for application-specific backups) or for the entire file system (for file system backups) from the file system metadata repository. The data protection agent may use an application identifier to obtain the file system metadata associated with the application. The data protection manager may use other appropriate methods, frameworks, or techniques to obtain file system metadata and other information about the host's application (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, the current file system metadata associated with the application may be obtained via other and / or additional methods.
[0078] In step 226, the checksum of the file included in the current file system data is generated using the current file system metadata. In one or more embodiments, the data protection agent can generate a checksum of the file included in the current file system of the file system associated with the application. The data protection agent can use the current file system metadata to identify the file of the file system associated with the application. The data protection agent can then use the data associated with each of the identified files to run to identify the data blocks associated with the file. The data protection agent can then use the data chunks corresponding to each of the identified files to generate the checksum of each of the identified files. Without departing from the embodiments disclosed herein, the data protection agent can generate the checksum by applying any appropriate checksum generation technology to the data chunks. For example, data protection can use message digest algorithm 5 (MD5) and / or secure hash algorithm (SHA) technology, such as SHA-1, SHA-256 and SHA-512. The checksum can refer to a small size data block that can be used to effectively check the change in the data block, which is derived from another digital data block. If the checksums match, they are generated using the same data block including the same data. If the checksums do not match, they are generated using different data blocks including different data. The current file system metadata may be used to generate checksums of files included in the current file system data via other and / or additional methods without departing from the embodiments disclosed herein.
[0079] In step 228, a backup checksum is obtained from the backup metadata. As discussed above, the backup metadata may include a checksum associated with a file corresponding to an application. In one or more embodiments, the data protection agent may parse the backup metadata to obtain the backup checksum. Without departing from the embodiments disclosed herein, the backup checksum may be obtained from the backup metadata via other and / or additional methods.
[0080] In step 230, the backup checksum and the generated checksum are used to identify matching files. In one or more embodiments disclosed herein, the data protection agent can compare the backup checksum associated with the file included in the backup and the generated checksum associated with the file currently stored on the host to identify matching files and non-matching files stored in the backup and currently stored on the host. As discussed above, the checksum can refer to a small-sized data block that can be used to effectively check the changes in the data block, which is derived from another digital data block. If the generated checksum matches the backup checksum, they are generated using the same data block (referred to as matching files in this article) including the same data. Therefore, the corresponding files included in the backup match the corresponding files stored in the host. If the generated checksum does not match the backup checksum, they are generated using different data blocks (referred to as non-matching files in this article) including different data. Therefore, the files associated with the checksum are new or have been modified since the previous backup was generated. In one or more embodiments, the data protection agent can identify matching files included in the backup and currently on the host and non-matching files included in the backup but not on the host. The backup checksums and generated checksums may be used to identify matching files via other and / or additional methods without departing from the embodiments disclosed herein.
[0081] In step 232, current data runs associated with non-matching files currently stored on the file system are obtained from the file system metadata. As discussed above, each file currently stored on the host can be associated with one or more data runs as specified in the current file system metadata. In one or more embodiments, the data protection agent can parse the current file system metadata to obtain the current data runs associated with each non-matching file identified in step 230 above. Non-matching data files can include files associated with an application that: (i) exists in the backup but is not currently present on the host, or (ii) exists on the backup but has been modified since the backup was generated. Without departing from the embodiments disclosed herein, current data runs associated with non-matching files currently stored on the file system can be obtained from the file system metadata via other and / or additional methods.
[0082] In step 234, backup data runs associated with the backed-up non-matching files are obtained from the backup metadata. As discussed above, the backup metadata may include checksums associated with files corresponding to the application. In one or more embodiments, the data protection agent may parse the backup metadata to obtain the backed-up data runs associated with each non-matching file identified above in step 230. The backup data runs may be obtained from the backup metadata via other and / or additional methods without departing from the embodiments disclosed herein.
[0083] In step 236, matching file portions that share the current data run and the backup data run are identified. In one or more embodiments, the data protection agent may compare the current data run with the backup data run to identify matching portions in the non-matching file. The matching portions in the non-matching file may include a subset of data blocks that are included in both the non-matching file on the backup and the corresponding non-matching file currently stored on the host. The current data run and the backup data run of data blocks of the non-matching file including different data may be different. Alternatively, if the current data run and the backup data run match, the corresponding data blocks in the host and the backup may match. In addition, to ensure that the data blocks match, the current data run and the backup data run may be used to compare the data blocks currently stored on the host with the corresponding data blocks in the backup storage device to identify matching (i.e., identical) data blocks. This comparison may include generating a data block checksum for the data blocks stored on the host and obtaining a data block checksum for the data blocks on the backup storage device and comparing the two checksums. Without departing from the embodiments disclosed herein, matching file portions of non-matching files that share the current data run and the backup data run may be identified via other and / or additional methods.
[0084] In step 238, a local copy of matching files and matching file portions is performed on the host. In one or more embodiments, the data protection agent may perform or initiate a local copy of matching files, matching file portions (i.e., matching data blocks of non-matching files) from other locations in the host to new locations in the host to partially recover the application. In other embodiments, the data protection agent may initiate a block clone of all data blocks of the identified matching files and matching file portions through a file system on the host (e.g., a Resilient File System (ReFS) file system) to perform a partial recovery of the application. The block clone operation may include updating a physical storage to virtual storage mapping and a block clone reference count to indicate that the file currently stored in the block clone operation in the file system is now referenced by another file of the recovered application without actually physically copying the file data. Without departing from the embodiments disclosed herein, the local copy of matching files and matching file portions may be performed on the host via other and / or additional methods.
[0085] In step 240, non-matching files and file portions are recovered from a backup storage device associated with the backup. In one or more embodiments, the data protection agent may send a request for all data blocks associated with the non-matching portion of the completely unique file and the non-matching file from the backup storage device. The data protection agent may send a request to the backup storage device, the request including a backup of the data blocks associated with the non-matching portion of the completely unique file and the non-matching file. The request may include a backup data run associated with the non-matching portion of the completely unique file and the non-matching file. In response to obtaining the request, the backup storage device may send the data blocks to the data protection agent. The data protection agent may then store the data blocks on the host to complete the recovery application. Without departing from the embodiments disclosed herein, any appropriate data transmission method may be used to transmit requests and data blocks between the data protection agent and the backup storage device. For example, the request and data blocks may be transmitted as a message including one or more network packets by one or more network devices that operably connect the data protection agent to the data protection manager. Without departing from the embodiments disclosed herein, non-matching files and file portions may be recovered from the backup storage device associated with the backup via other and / or additional methods.
[0086] In one or more embodiments disclosed herein, the method ends after step 240 .
[0087] Figure 3A A flow chart of a method for performing new data discovery during backup access services according to one or more embodiments disclosed herein is shown. Figure 3A The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 3A All or part of the method. Figure 3A Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0088] Initially, in step 300, a backup access event associated with a backup is identified. In one or more embodiments, a data protection agent may obtain a request to access a backup. The request may come from an application, directly from a user of the application, or from a data protection manager in response to a request obtained from a user through a user interface. The data protection agent may identify the receipt of a request as a backup access event. The request may include an application-specific backup access request (i.e., a request to access a backup of a file of a host file system associated with a specific application). In another embodiment, the request may include a file system backup access request (i.e., a request to access a backup of the entire file system of the host). The request may include a backup identifier associated with the backup to which the request is directed. Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup. Without departing from the embodiments disclosed herein, a backup access event associated with a backup may be identified via other and / or additional methods.
[0089] In step 302, backup metadata associated with the backup is obtained. In one or more embodiments, the data protection agent sends a request for backup metadata associated with the backup to the data protection manager. The request may include a backup identifier. In response to obtaining the request, the data protection manager obtains the backup metadata and sends the backup metadata to the data protection agent. Without departing from the embodiments disclosed herein, any appropriate data transmission method may be used to provide backup metadata and requests to and from the data protection agent. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection agent may transmit the request as a message including one or more network packets. In addition, by operably connecting the data protection agent and one or more network devices of the data protection manager, the data protection manager may transmit the backup metadata as a message including one or more network packets. Without departing from the embodiments disclosed herein, the backup metadata associated with the backup may be obtained from the data protection manager via other and / or additional methods.
[0090] In step 304, a virtual hard disk file is generated. In one or more embodiments, the data protection agent generates a virtual hard disk file. The virtual hard disk file can be, for example, a virtual hard disk v2 (VHDX) file consistent with the VHDX format. The virtual hard disk file may not include any data and / or metadata when it is generated. The data protection agent can also mount the virtual hard disk file to the host. Without departing from the embodiments disclosed herein, the virtual hard disk file can be generated via other and / or additional methods.
[0091] In step 306, a placeholder file system with a block cloning function is generated using backup metadata and the placeholder file system is stored in a virtual hard disk file. The data protection agent can generate a placeholder file system using backup metadata and store the placeholder file system in a virtual hard disk file. The placeholder file system may include a placeholder file (e.g., via a parent file identifier) arranged in a hierarchical structure specified in the backup metadata. The placeholder file may include a file identifier associated with a corresponding file specified by the backup metadata. The placeholder file may be set to include the length of the corresponding file specified by the backup metadata. Without departing from the embodiments disclosed herein, the placeholder file may include other information associated with the corresponding file in the backup (e.g., file type, creation timestamp, corresponding application identifier, etc.). The placeholder file of the placeholder file system in the virtual hard disk file may not yet include actual file data.
[0092] In one or more embodiments, the data protection agent can obtain the logical block address (LBA) associated with each placeholder file in the placeholder file system stored in the virtual hard disk file. The LBA can refer to the block or other part of the placeholder file of the storage or positioning placeholder file system of the virtual hard disk file. The data protection agent can generate a mapping of the LBA and the corresponding placeholder file. Without departing from the embodiments disclosed herein, the mapping can be any type of mapping. For example, the mapping can be a key-value mapping, where the LBA of the file is the key and the file name is the corresponding value. The LBA mapping can be included in the virtual hard disk file. The backup metadata can be updated to include a copy of the LBA mapping. Without departing from the embodiments disclosed herein, the placeholder file system can be generated using the backup metadata and stored in the virtual hard disk file via other and / or additional methods.
[0093] In step 308, a hidden copy of the placeholder file system is generated using block cloning. In one or more embodiments, the data protection agent may initiate the generation of a hidden copy of the placeholder file system by performing block cloning on the files included in the placeholder file system through the placeholder file system. Without departing from the embodiments disclosed herein, the placeholder file system may include a ReFS file system or some other type of file system with block cloning capabilities. The block cloning operation may include updating the physical storage (e.g., physical storage address) to the virtual storage mapping (e.g., LBA) and the block cloning reference count to indicate that the file of the placeholder file system in the block cloning operation currently stored in the placeholder file system is now referenced by the hidden copy of the placeholder file system, without actually physically copying the file data between the two file systems. In one or more embodiments disclosed herein, applications and other applications do not have access to the hidden copy. The application may not know that there is a hidden copy. Alternatively, the data protection agent may access the hidden copy. Without departing from the embodiments disclosed herein, the hidden copy of the placeholder file system may be generated using block cloning via other and / or additional methods.
[0094] In step 310, an initial block clone reference count (BCRC) associated with the placeholder file system and the hidden copy is saved. As discussed above, a block clone operation may include a BCRC. The BCRC may be generated and updated by the placeholder file system during the execution of the block clone operation. The initial BCRC may include a list of files (e.g., file identifiers associated with the files) in the placeholder file system and the number of times the files are referenced by the file system. At this point, each file is referenced by at least the placeholder file system and the hidden copy. Therefore, the reference count associated with each file may be at least two. The initial BCRC may also specify that both the placeholder file system and the hidden copy reference each file. In one or more embodiments, the data protection agent may obtain a copy of the initial BCRC and save the initial BCRC from the placeholder file system.
[0095] In step 312, the virtual hard disk file is loaded on the host. In one or more embodiments, the data protection agent unloads the virtual hard disk file. The data protection agent can start, instantiate, initiate startup or otherwise initiate instantiation of an Internet Small Computer System Interface (ISCSI) target. The ISCSI target can be a software-based ISCSI target (e.g., a computing instruction executed on a host, a data protection agent or a backup storage device) or a hardware-based ISCSI target (e.g., a physical device including a circuit system or a computing device such as a server) configured to receive and service ISCSI commands. The ISCSI target can be operably connected to the backup storage device and the data protection agent. The ISCSI target can open or otherwise access the virtual hard disk file. The data protection agent can then start or instantiate an ISCSI initiator. The ISCSI initiator can be a software-based ISCSI initiator (e.g., a computing instruction executed on a host or a data protection agent) or a hardware-based ISCSI initiator (e.g., a physical device including a circuit system or a computing device such as a server) configured to generate and send ISCSI commands. The ISCSI initiator can be operably connected to an application. The data protection agent then establishes a connection between the ISCSI initiator and the ISCSI target so that the ISCSI initiator can send ISCSI commands to the ISCSI target, which can then service the commands and return results to the ISCSI initiator.
[0096] The iSCSI target can load the virtual hard disk file and provide the logical unit number (LUN) information to the iSCSI initiator. The LUN information can enable the initiator to present the virtual hard disk file as a volume to a single application instance of the VM. Without departing from the embodiments disclosed herein, the virtual hard disk file can be loaded on the host via other and / or additional methods.
[0097] In step 314, the backup access service is performed using the placeholder file system and the backup metadata. In one or more embodiments, the backup access service can be performed via the following Figure 3B The backup access service may be performed using the placeholder file system and backup metadata via other and / or additional methods without departing from the embodiments disclosed herein. For additional information about performing backup access services using the placeholder file system and backup metadata, see Figure 3B .
[0098] In step 316, an updated BCRC associated with the placeholder file system and the hidden copy is obtained. In one or more embodiments, the data protection agent can obtain an updated BCRC from the placeholder file system after the backup access of the application has ended. In one or more embodiments, the placeholder file system can perform additional block cloning operations during the backup access of the application. If the application writes new data to the placeholder file system to generate a new file or modify an existing file, the placeholder file system can perform a copy-on-write to write the new data to a new unused physical address. If the write is associated with a new file, the placeholder file system can write the data block to one or more unused physical storage addresses and generate a new file associated with the new data block in the hidden copy of the placeholder file system. The placeholder file can update the reference count in the initial BCRC associated with the new file to specify that the hidden copy references the new file.
[0099] If the write is modifying an existing file, the placeholder file system can merge the new data blocks with the existing data blocks of the file and store the merged data blocks in one or more unused physical storage addresses. The placeholder file system can generate a new file associated with the modified blocks in the hidden copy of the placeholder file system. The placeholder file system can update the reference count in the initial BCRC to delete the hidden copy's reference to the old file corresponding to the modified file. The placeholder file system can update the initial BCRC to generate an updated BCRC to reflect all new and modified files generated by the application during the entire backup access process of the application. Without departing from the embodiments disclosed herein, an updated BCRC associated with the placeholder file system and the hidden copy can be obtained via other and / or additional methods.
[0100] In step 318, determine whether the initial BCRC and the updated BCRC match. In one or more embodiments, the data protection agent can compare the initial BCRC and the updated BCRC. In one or more embodiments, if the reference count associated with the old file on the updated BCRC is less than the reference count associated with the corresponding file in the initial BCRC (i.e., the hidden copy no longer references the old file, but the newly generated modified file), the data protection agent can determine that the initial BCRC and the updated BCRC do not match. In addition, in one or more embodiments, if the updated BCRC includes a new file in the file list not included in the initial BCRC (i.e., a new file is generated during the backup access), the data protection agent can determine that the initial BCRC and the updated BCRC do not match. In one or more embodiments, if the initial BCRC and the updated BCRC include the same file list with the same reference count (i.e., no new or modified files are generated during the backup access), the data protection agent can determine that the initial BCRC and the updated BCRC match. Without departing from the embodiments disclosed herein, it can be determined via other and / or additional methods whether the initial BCRC and the updated BCRC match.
[0101] In one or more embodiments disclosed herein, if it is determined that the initial BCRC and the updated BCRC match, the method ends after step 318. In one or more embodiments disclosed herein, if it is determined that the initial BCRC and the updated BCRC do not match, the method proceeds to step 320.
[0102] In step 320, the modified data blocks are identified using the updated BCRC. In one or more embodiments, the data protection agent can identify files that are only referenced by the hidden copy in the updated BCRC. These files may only include new files or modified files that are newly generated during the backup access. In one or more embodiments, the updated BCRC may include storage locations (e.g., data runs, physical addresses, pointers, logical to physical address mappings, etc.) associated with the modified data blocks of the newly generated files. The modified data blocks may include new data blocks of the new file and associated merged data blocks of the modified file. Alternatively, the hidden copy may include or otherwise generate storage locations associated with the modified data blocks of the newly generated files. The data protection manager may use the identified files and corresponding storage locations to identify the modified data blocks.
[0103] In step 322, the modified data block is stored. In one or more embodiments, the modified data block is stored in a storage device (e.g., a persistent storage device) of the host. Thus, the modified data block can be used in a subsequent backup access operation or a subsequent backup generation associated with the application. Therefore, the modified data block may not be lost after the backup access service ends.
[0104] In one or more embodiments disclosed herein, the method ends after step 322 .
[0105] Figure 3B A flow chart of a method for performing backup access services according to one or more embodiments disclosed herein is shown. Figure 3B The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 3B All or part of the method. Figure 3B Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0106] Initially, in step 330, a data access request associated with a placeholder file included in a placeholder file system stored in a virtual hard disk file is obtained from an application. In one or more embodiments, the application submits a data access request to a data protection agent. The data protection agent can then submit an iSCSI or small computer system interface (SCSI) command through an iSCSI initiator to read a placeholder file in a placeholder file system stored in an iSCSI target of a virtual hard disk file. The read request and resulting SCSI command may include an LBA and a file size associated with the file. The data access request associated with the file may be an iSCSI command. Without departing from the embodiments disclosed herein, a data access request associated with a file in a placeholder file system stored on a virtual hard disk file may be obtained from an application via other and / or additional methods.
[0107] In step 332, the file is obtained from the backup storage device using the backup metadata. As discussed above, the LBA mapping can specify a file name (e.g., a file identifier) associated with the placeholder file. Also as discussed above, the backup metadata can include one or more backup storage information portions, the one or more backup storage information portions including a backup storage identifier and a file identifier, the file identifier corresponding to a file included in a backup or backup portion stored on the backup storage device. The data protection agent can match the file identifier included in the LBA mapping with the file identifier included in the backup storage information portion. The data protection agent can then identify the backup storage device associated with the backup identifier included in the corresponding backup storage information portion as the backup storage device associated with the placeholder file. Without departing from the embodiments disclosed herein, the backup storage device associated with the placeholder file can be identified via other and / or additional methods.
[0108] In step 334, the file is provided to the application. In one or more embodiments, the iSCSI target may not be able to directly obtain the file data using the LBA because the LBA is associated with the virtual hard disk file, rather than being associated with the backup or backup portion stored in the backup storage device. Therefore, the iSCSI target uses the LBA mapping included in the backup metadata to identify that the file corresponding to the placeholder file is associated with the SCSI command, as discussed above. As discussed above, the LBA mapping can include a key-value mapping of a specified LBA and a corresponding file name or file identifier. The iSCSI target can match the LBA in the SCSI command with the LBA in the LBA mapping and identify the corresponding file name. The iSCSI can then use the backup information portion associated with the file to identify the storage location of the file in the backup stored in the backup storage device.
[0109] In one or more embodiments, if the backup storage device is a file system-based backup storage device, the data protection agent can use the offset associated with the file corresponding to the file name in the backup storage information portion. The iSCSI target can then use the offset and a connection to the backup storage device (e.g., a network connection) to read the file data corresponding to the file from the backup storage device and return the file data to the iSCSI initiator to service the SCSI command.
[0110] In one or more embodiments, if the backup storage device is a block-based backup storage device, the data protection agent can use the data block range associated with the file corresponding to the file name in the backup storage information portion. The iSCSI target can then use the data block range and a connection (e.g., a network connection) to the backup storage device to read the file data corresponding to the file from the backup storage device and return the file data to the iSCSI initiator to service the SCSI command.
[0111] Files may be obtained from the backup storage via other and / or additional methods without departing from the embodiments disclosed herein.
[0112] In step 336, it is determined whether the backup access service has ended. In one or more embodiments, the application may send a notification indicating the termination of the backup access service. Alternatively, the data protection agent may be configured to Figures 1A to 1C Another entity not shown in the figure monitors or initiates monitoring the execution of the application. The data protection agent can know when the application stops executing, thereby ending the backup access service. The data protection agent can wait for notification or the application to stop executing. In one or more embodiments, if the data protection agent receives notification or identifies that the application has stopped executing, the data protection agent can determine that the backup access service has ended. In one or more embodiments, if the data protection agent does not receive notification and does not identify that the application has stopped executing, the data protection agent can determine that the backup access service has not ended. Without departing from the embodiments disclosed herein, other and / or additional methods can be used to determine whether the backup access service can be performed.
[0113] In one or more embodiments disclosed herein, if it is determined that the backup access service has ended, the method ends after step 336. In one or more embodiments disclosed herein, if it is determined that the backup access service has not ended, the method proceeds to step 336.
[0114] In step 338, determine whether a new data access request is obtained. In one or more embodiments, the data protection agent may check to determine whether another data access request is obtained from the application. The data protection agent may obtain the data access request via the method discussed above in step 330. In one or more embodiments, if the data protection agent has not obtained a data access request after obtaining a previous data access request, the data protection agent may determine that a new data access request is not obtained. In one or more embodiments, if the data protection agent has obtained a data access request after obtaining a previous data access request, the data protection agent may determine that a new data access request is obtained. Without departing from the embodiments disclosed herein, whether a new data access request is obtained may be determined via other and / or additional methods.
[0115] In one or more embodiments disclosed herein, if it is determined that a new data access request is obtained, the method proceeds to step 332. In one or more embodiments disclosed herein, if it is determined that a new data access request is not obtained, the method proceeds to step 336.
[0116] Figure 4A A flow chart of a method for performing application-aware item-level backup access services according to one or more embodiments disclosed herein is shown. Figure 4A The method shown in can be implemented by, for example, a data protection manager (e.g., 120, Figure 1A Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 4A All or part of. Figure 4A Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0117] Initially, in step 400, a protection policy dependency validation event associated with a file system of a host is obtained. In one or more embodiments, the data protection manager may obtain a request from a user to perform a protection policy dependency validation on the file system of the host. The request may be provided directly by the user through a user interface (e.g., a graphical user interface, a command line interface, etc.), or through a client used by the user (in a Figure 1AThe data protection manager may identify the receipt of the request as a protection policy dependency confirmation event. The request may include a protection policy associated with the file system or a protection policy identifier corresponding to the protection associated with the file system. Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the protection policy dependency confirmation event.
[0118] In other embodiments, the data protection manager may monitor previously stored protection policies associated with a file system on the host (described above in Figures 1A to 1C ). A protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a time point for generating a backup, backup storage information associated with one or more backup storage devices for storing backups and / or portions of backups, etc.). A protection policy may be associated with a file system. A protection policy may be generated by a user and provided to a data protection manager, which may monitor the protection policy to initiate execution of a data protection service in accordance with the backup requirements specified by the protection policy. The data protection manager may identify a time point specified by a backup schedule of a protection policy associated with a file system as a protection policy dependency confirmation event to confirm the file system dependency associated with the protection policy before initiating execution of a backup of the file system to avoid loss of dependent data stored on other file systems of the host.
[0119] Protection policy dependency validation events associated with a file system may be identified via other and / or additional methods without departing from the embodiments disclosed herein.
[0120] In step 402, file system dependency discovery by a data protection agent on a host is initiated. In one or more embodiments, the data protection manager may send a request to the data protection agent on the host to perform file system dependency discovery. The protection policy associated with the protection policy dependency confirmation event may include a host identifier associated with the protection policy. The data protection manager may identify the host and send the request to the data protection agent of the host. Without departing from the embodiments disclosed herein, the request may be sent to the data protection agent using any appropriate data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection manager may transmit the request as a message including one or more network packets. Without departing from the embodiments disclosed herein, file system dependency discovery by the data protection agent on the host may be initiated via other and / or additional methods.
[0121] In step 404, dependency information associated with the file system is obtained from the data protection agent. In one or more embodiments, the dependency information associated with the file system may be obtained via the following Figure 4B The method discussed in deriving dependency information associated with a file system from a data protection agent. Dependency information associated with a file system may be obtained from a data protection agent via other and / or additional methods without departing from the embodiments disclosed herein. For additional information about obtaining dependency information associated with a file system from a data protection agent, see Figure 4B .
[0122] In step 406, determine whether there are user dependency rules associated with the protection policy. In one or more embodiments, the data protection manager can parse the protection policy associated with the protection policy dependency confirmation event to identify any user dependency rules. The protection policy may or may not include user dependency rules (discussed below). In one or more embodiments, if the protection policy includes user dependency rules, the data protection manager can determine that there are user dependency rules associated with the protection policy. In one or more embodiments, if the protection policy does not include user dependency rules, the data protection manager can determine that there are no user dependency rules associated with the protection policy. Without departing from the embodiments disclosed herein, it can be determined via other and / or additional methods whether there are user dependency rules associated with the protection policy.
[0123] In one or more embodiments, user dependency rules may include one or more data structures that specify rules for including other file systems (or parts of other file systems) in the protection policy based on dependency information. User dependency rules may be generated by a user (e.g., a system administrator). User dependency rules may include, for example, a list of file systems to be included in the protection policy and / or excluded from the protection policy, a list of applications to be included in the protection policy and / or excluded from the protection policy, a list of files to be included in the protection policy and / or excluded from the protection policy, whether to include all dependent file systems specified by the dependency information, and / or a dependency priority threshold for determining whether to include a dependent file system. Without departing from the embodiments disclosed herein, user dependency rules may include other and / or additional rules for including other file systems (or parts of other file systems) in the protection policy based on dependency information. As used herein, a dependent file system may refer to a file system in which application data associated with a file system corresponding to a protection policy is included. Not including a dependent file system in a backup of a file system may result in data loss. Therefore, a file system may be described as depending on a dependent file system.
[0124] The dependency priority threshold may specify a priority value limit, above which the corresponding dependent file system may be included in the protection policy. The priority value may include a numerical representation of the priority of the corresponding dependency. The higher the priority value, the more necessary it is to include the dependent file system in the protection policy. The priority value may be assigned to a dependent file system based on, for example, the type of application files included in the dependent file system, the amount of application data stored in the dependent file system, the percentage of application data stored in the dependent file system, etc.
[0125] For example, a database application of a file system corresponding to a protection policy may include only temporary file types in a first dependent file system and database files in a second dependent file system. Therefore, a low priority threshold may be assigned to the first dependent file system, while a high priority threshold may be assigned to the second dependent file system. As another example, the first dependent file system may include kilobytes of application data of the file system, and the second dependent file system may include gigabytes of application data of the file system. A lower priority value may be assigned to the first dependent file system than to the second dependent file system. As yet another example, the first dependent file system may include 5% of the application data of the application of the file system, and the second dependent file system may include 50% of the application data of the application of the file system. A lower priority value may be assigned to the first dependent file system than to the second dependent file system.
[0126] In one or more embodiments disclosed herein, if it is determined that there are user dependency rules associated with the protection policy, the method proceeds to step 408. In one or more embodiments disclosed herein, if it is determined that there are no user dependency rules associated with the protection policy, the method proceeds to step 412.
[0127] In step 408, it is determined whether the user dependency rule indicates a protection policy update. As discussed above, the user dependency rule specifies a rule for including other file systems (or portions of other file systems) in the protection policy based on dependency information. In one or more embodiments, the data protection manager may compare the user dependency rule with the dependency information to determine whether the user dependency rule indicates a protection policy update. The data protection manager may determine that the user dependency rule indicates a protection policy update if the dependency information satisfies one or more of the user dependency rules and has not yet been included in the protection policy. The user dependency rule may be satisfied when: (i) the dependency information includes a file system or a file system including an application or file that needs to be included, (ii) there are dependent file systems and all dependent file systems will be included, or (iii) the dependent file system is associated with a priority value that is higher than a dependency priority threshold. In one or more embodiments, if the dependency information satisfies the user dependency rule, the data protection manager may determine that the user dependency rule indicates a protection policy update. In one or more embodiments, if the dependency information does not satisfy the user dependency rule, the data protection manager may determine that the user dependency rule does not indicate a protection policy update. Whether a user dependency rule indicates a protection policy update may be determined via other and / or additional methods without departing from the embodiments disclosed herein.
[0128] In one or more embodiments disclosed herein, if it is determined that the user dependency rule indicates a protection policy update, the method proceeds to step 410. In one or more embodiments disclosed herein, if it is determined that the user dependency rule does not indicate a protection policy update, the method proceeds to step 418.
[0129] In step 410, the protection policy is updated based on the user dependency rules and the dependency information. In one or more embodiments, the data protection manager can update the protection policy using the dependency information that satisfies the user dependency rules. In other words, the data protection manager can include files, applications, and / or entire file systems of other dependent file systems that meet the user dependency rules specified by the dependency information. Therefore, the data protection manager can include file identifiers, application identifiers, and / or file system identifiers associated with the dependent file systems specified by the user selection in the protection policy. For example, the data protection manager can update the protection policy to include files and applications of one or more dependent file systems, the one or more dependent file systems corresponding to the applications of the file systems associated with the protection policy and already included in the protection policy, and the one or more dependent file systems satisfy (i.e., are included in) the list of files, applications, and / or file systems to be included in the protection policy. As another example, if the user dependency rule specifies that all dependent file systems should be included, the data protection manager can include all files and applications of one or more dependent file systems, the one or more dependent file systems corresponding to the applications of the file systems associated with the protection policy and already included in the protection policy. As another example, if a dependent file system is associated with a priority value that is higher than a dependency priority threshold, the data protection manager can include all files and applications of one or more dependent file systems that correspond to applications of the file systems associated with and included in the protection policy.
[0130] In step 412, the dependency information is provided to the user. In one or more embodiments, the data protection manager may provide the dependency information to the user. In one embodiment, the data protection manager may provide the dependency information directly through a user interface of the data protection manager, which displays the dependency information to the user. The user interface may include any type of user interface without departing from the embodiments disclosed herein. For example, the user interface may be a graphical user interface, a command line interface, etc. In another embodiment, the data protection manager may provide the dependency information to the user by sending the dependency information to a client (in a Figure 1AThe dependency information may be provided to the user indirectly by a data protection manager (not shown in the system). The user may then access the dependency information of the client. Without departing from the embodiments disclosed herein, the dependency information may be sent to the client using any suitable data transmission method. For example, the data protection manager may transmit the dependency information as one or more messages including one or more network packets by operably connecting the data protection manager to one or more network devices of the client. Without departing from the embodiments disclosed herein, the dependency information may be provided for use via other and / or additional methods.
[0131] In step 414, a user selection associated with the dependency information is obtained. In one or more embodiments, the data protection manager can obtain the user selection from the user. In one embodiment, the data protection manager can obtain the user selection directly from the user through a user interface. The user can provide one or more inputs specifying the user selection (e.g., clicking a box with a mouse, clicking a button with a mouse, entering a command with a keyboard, touching a portion of a screen, etc.). The user selection can refer to one or more data structures that specify all or part of the files and / or applications of the dependent file system specified in the dependency information that are not yet included in the protection policy but that the user wishes to include in the protection policy. In other embodiments, the data protection manager can obtain the user selection from the client. Without departing from the embodiments disclosed herein, any appropriate data transmission method can be used to provide the user selection to the data protection manager. For example, the client can transmit the user selection as one or more messages including one or more network packets by operably connecting the data protection manager to one or more network devices of the client. Without departing from the embodiments disclosed herein, the user selection associated with the dependency information can be obtained via other and / or additional methods.
[0132] In step 416, determine whether the user selection requires a protection policy update. In one or more embodiments disclosed herein, the data protection manager can parse the user selection to determine whether the user selection requires a protection policy update. As discussed above, the user selection can refer to one or more data structures that specify all or part of the files and / or applications of the dependent file system specified in the dependency information that are not yet included in the protection policy but that the user wishes to include in the protection policy. In one or more embodiments, if the user selection includes one or more files, applications, or the entire file system associated with the dependent file system, the data protection manager can determine that the user selection requires a protection policy update. In one or more embodiments, if the user selection does not include any files, applications, or the entire file system associated with the dependent file system, the data protection manager can determine that the user selection does not require a protection policy update. Without departing from the embodiments disclosed herein, it can be determined via other and / or additional methods whether the user selection requires a protection policy update.
[0133] In one or more embodiments disclosed herein, if it is determined that the user selection requires a protection policy update, the method proceeds to step 418. In one or more embodiments disclosed herein, if it is determined that the user selection does not require a protection policy update, the method proceeds to step 420.
[0134] In step 418, the protection policy is updated based on the user selection. In one or more embodiments, the data protection manager updates the protection policy to include one or more files, applications, or entire file systems associated with the dependent file systems included in the user selection. Thus, the data protection manager may include file identifiers, application identifiers, and / or file system identifiers associated with the dependent file systems specified by the user selection in the protection policy. Without departing from the embodiments disclosed herein, the protection policy may be updated based on the user selection via other and / or additional methods.
[0135] In step 420, data protection services are executed based on the protection policy. In one or more embodiments, the data protection manager may send a request to the data protection agent of the host to generate a backup based on the protection policy. The file system originally associated with the protection policy and / or the files, applications, and / or the entire file system associated with the dependent file system on which the original file system depends may be specified in the request. In response to obtaining the request, the data protection agent may generate a backup of the file system and / or the files, applications, and / or the entire file system associated with the dependent file system specified by the request. The data protection manager may wait until the time point specified by the backup schedule included in the protection policy occurs before sending the request. Without departing from the embodiments disclosed herein, the request may be provided to the data protection agent using any appropriate data transmission method. For example, by operably connecting the data protection manager to one or more network devices of the data protection agent, the data protection manager may transmit the request as one or more messages including one or more network packets. Without departing from the embodiments disclosed herein, the execution of the data protection service based on the protection policy may be initiated via other and / or additional methods.
[0136] In one or more embodiments disclosed herein, the method ends after step 420 .
[0137] Figure 4B A flow chart of a method for generating dependency information according to one or more embodiments disclosed herein is shown. Figure 4B The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 4B All or part of the method. Figure 4B Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0138] Initially, in step 430, a dependency discovery request associated with the file system is obtained from the data protection manager. In one or more embodiments, the data protection manager may send a request to a data protection agent on a host to perform file system dependency discovery associated with the file system. The request may include a file system identifier associated with the file system. Without departing from the embodiments disclosed herein, the request may be sent to the data protection agent using any appropriate data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection manager may transmit the request as a message including one or more network packets. Without departing from the embodiments disclosed herein, the dependency discovery request associated with the file system may be obtained from the data protection manager via other and / or additional methods.
[0139] In step 432, file system metadata is used to identify applications associated with the file system. In one or more embodiments, the data protection agent can obtain all file system metadata from a file system metadata repository associated with the file system using a file system identifier corresponding to the file system. The obtained file system metadata can specify applications associated with the file system. In one or more embodiments, the data protection agent can parse the obtained file system metadata associated with the file system to identify all applications associated with the file system. Without departing from the embodiments disclosed herein, file system metadata can be used to identify applications associated with the file system via other and / or additional methods.
[0140] In step 434, application data storage information is obtained. In one or more embodiments, the data protection agent can identify a VSS writer ( Figure 1B). A VSS writer may refer to a service (e.g., a computer instruction) that, when executed by a processor of a host, writes or otherwise stores application data (e.g., data blocks of a file) of an application on the host and generates a snapshot of the application data. A VSS writer may know the location of the application data storage associated with each application. A data protection agent may call a VSS writer associated with each application to simulate a backup operation, thereby obtaining application data storage information associated with each application. The application data storage information may specify the storage location of the application's files. Without departing from the embodiments disclosed herein, the storage location may include a file system identifier, a data run, a physical address, a file size, a pointer, a logical to physical address mapping, and / or other or additional information specifying where the application data is stored. If the application is not associated with a VSS writer, the data protection agent may manually parse all file system metadata to identify the application storage information associated with the application of the file system. Without departing from the embodiments disclosed herein, the application data storage information may be obtained via other and / or additional methods.
[0141] In step 436, a list of additional file systems is generated using the application data storage information, the additional file systems including the application data associated with each application. As discussed above, the application data storage information may include a file system identifier associated with each file of the application. In one or more embodiments, the data protection agent may parse the application data storage information to identify the file system associated with each application, and generate a list of additional file systems associated with each application of the file system corresponding to the protection policy. The data protection agent may generate a list of associated additional file systems for each application. Without departing from the embodiments disclosed herein, the application data storage information may be used to generate a list of additional file systems including the application data associated with each application via other and / or additional methods.
[0142] In step 438, a list of dependent file systems associated with the file system is generated based on the list of attached file systems. In one or more embodiments, the data protection manager generates a list of dependent file systems using the list of attached file systems. The data protection manager may include each attached file system associated with an application of the file system in the list of dependent file systems. The list of dependent file systems may include only one instance of each dependent file system, even if the dependent file system may be an attached file system for multiple applications of the file system. Without departing from the embodiments disclosed herein, a list of dependent file systems associated with a file system may be generated based on the list of attached file systems via other and / or additional methods.
[0143] In step 440, dependency information is generated using a list of dependent file systems and a list of additional file systems associated with the application. In one or more embodiments, the data protection agent can generate dependency information by including a list of dependent file systems and a list of additional file systems associated with the application in the dependency information. The data protection agent can further include application data storage information associated with each application in the dependency information. In addition, the data protection agent can use the list of additional file systems and the application data storage information to assign a priority value associated with each dependent file system. The data protection agent can include or otherwise access a data priority value assignment rule specified by a user (e.g., stored in a host storage device). The data priority value assignment rule can include a mapping between a dependency feature value or a value range and a priority value. The dependency feature can include a file type, an amount of data associated with a file, and a percentage of total application data associated with a file, etc. The dependency information can include other and / or additional information associated with the dependency between the file system associated with the protection policy and other file systems. Without departing from the embodiments disclosed herein, the dependency information can be generated using a list of dependent file systems and a list of additional file systems associated with the application via other and / or additional methods.
[0144] In step 442, the dependency information is provided to the data protection manager. In one or more embodiments, the data protection agent may send the dependency information to the data protection manager. Without departing from the embodiments disclosed herein, the dependency information may be sent to the data protection manager using any suitable data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection agent may transmit the dependency information as a message including one or more network packets. Without departing from the embodiments disclosed herein, the dependency information may be provided to the data protection manager via other and / or additional methods.
[0145] In one or more embodiments disclosed herein, the method ends after step 442 .
[0146] Figure 5A A flow chart of a method for generating dependency information according to one or more embodiments disclosed herein is shown. Figure 5A The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 5A All or part of the method. Figure 5A Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0147] Initially, in step 500, a full image backup generation request associated with a virtual machine (VM) is obtained from a data protection manager. In one or more embodiments, the data protection agent may obtain a request to generate a full image backup from a data protection manager associated with the VM. The data protection agent may identify the receipt of the request as a backup generation event. The request may include a VM identifier associated with the VM to which the request is directed. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices that will store the backup to be generated. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation. In one or more embodiments, the data protection manager may send the request based on a protection policy associated with an application or a file system. The protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a point in time for generating a backup, backup storage information associated with one or more backup storage devices for storing a backup and / or a portion of a backup, etc.). Protection policies may be generated by a user and provided to a data protection manager, which may monitor the protection policies to initiate execution of data protection services according to backup requirements specified by the protection policies.
[0148] In another embodiment, the data protection manager may send a backup generation request in response to an on-demand backup generation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand backup generation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand backup generation request may include backup storage information associated with one or more backup storage devices used to store backups and / or portions of backups, and / or other information associated with the backup generation.
[0149] A full image backup generation request associated with a VM may be obtained from a data protection manager via other and / or additional methods without departing from the embodiments disclosed herein.
[0150] In step 502, a list of files to be excluded from the image backup is obtained from the data protection manager. In one or more embodiments, the data protection manager may send a list of files to be excluded from the full image backup (e.g., file identifiers associated with the files) to the data protection agent. The list of data files to be excluded from the image backup may be generated by a user. Without departing from the embodiments disclosed herein, the list of files may be sent to the data protection agent using any suitable data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection manager may transmit the list of files as a message including one or more network packets. Without departing from the embodiments disclosed herein, the list of files to be excluded from the image backup may be obtained from the data protection manager via other and / or additional methods.
[0151] In step 504, a checkpoint of the VM is generated. In one or more embodiments, the data protection agent may generate or initiate generation of a checkpoint of the VM associated with the image backup. In one or more embodiments, a VM checkpoint may refer to a differential file or snapshot that captures the state, data, and / or hardware configuration of the VM in operation. The checkpoint may ensure that the image of the VM is good and does not change during the backup generation. Checkpoints of the VM may be generated via other and / or additional methods without departing from the embodiments disclosed herein.
[0152] In step 506, file system metadata associated with the VM is obtained. As discussed above, the storage device of the host may include a file system metadata repository that stores information associated with files of the VM included in a host file system generated by a user of the host and / or the VM during execution of a computer-implemented service. The data protection agent may obtain the file system metadata associated with the VM from the file system metadata repository. The data protection agent may use a VM identifier to obtain the file system metadata associated with the VM. The data protection agent may use other appropriate methods, frameworks, or techniques to obtain the file system metadata and other information about the host's application (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, the file system metadata associated with the application may be obtained via other and / or additional methods.
[0153] In step 508, data runs associated with each file associated with the VM are queried. As discussed above, each file stored on the host can be associated with one or more data runs as specified in the file system metadata. In one or more embodiments, the data protection agent can use the obtained file system metadata to parse the file system metadata to obtain the data runs associated with each file of the VM. Without departing from the embodiments disclosed herein, the data runs associated with each file of the VM can be queried from the file system metadata via other and / or additional methods.
[0154] In step 510, an excluded portion of a data run associated with a file included in a list of files to be excluded from an image backup is identified. Each data run obtained as a result of the query in step 508 can be associated with a file identifier. In one or more embodiments, the data protection agent can compare the file identifier associated with each obtained data run with the file identifier included in the list of files to be excluded from the backup. The portion of the data run associated with the file identifier included in the list of files to be excluded can be identified as the excluded portion of the data run. Without departing from the embodiments disclosed herein, the excluded portion of a data run associated with a file included in the list of files to be excluded from an image backup can be identified via other and / or additional methods.
[0155] In step 512, a file associated with the VM is selected. In one or more embodiments, the data protection agent may use the obtained file system metadata to select a file identifier associated with a file of the VM. The file associated with the selected file identifier may be the selected file. The data protection agent may select the first file in the file system metadata that has not yet been selected. Alternatively, the data protection agent may select a random file in the file system metadata that has not yet been selected. After selecting the file, the data protection agent may mark the file or file identifier or otherwise indicate that the file has been selected to avoid selecting a previously selected file. Without departing from the embodiments disclosed herein, files associated with the VM may be selected via other and / or additional methods.
[0156] In step 514, a determination is made as to whether the data run of the file is included in the excluded portion of the data run. In one or more embodiments, the data protection agent may compare the data run associated with the selected file to the data run included in the excluded portion. In one or more embodiments, if the data run of the selected file matches the data run included in the excluded portion, the data protection agent may determine that the data run of the file is included in the excluded portion of the data run. In one or more embodiments, if the data run of the selected file does not match any data run included in the excluded portion, the data protection agent may determine that the data run of the file is not included in the excluded portion of the data run. Without departing from the embodiments disclosed herein, it may be determined whether the data run of a file is included in the excluded portion of the data run via other and / or additional methods.
[0157] In one or more embodiments disclosed herein, if it is determined that the data run of the file is included in the excluded portion of the data run, the method proceeds to step 516. In one or more embodiments disclosed herein, if it is determined that the data run of the file is not included in the excluded portion of the data run, the method proceeds to step 518.
[0158] In step 516, file data is skipped using a data run. In one or more embodiments, the data protection agent can skip one or more data blocks of the selected file corresponding to the data run. The data protection agent can also skip including file system metadata associated with the file in the backup metadata associated with the backup. Thus, the file can be excluded from the backup. Without departing from the embodiments disclosed herein, file data can be skipped using a data run via other and / or additional methods.
[0159] In step 518, the file data is written to the backup storage device using the data run to generate the portion of the full image backup. In one or more embodiments, the data protection agent may write one or more data blocks of the selected file corresponding to the data run of the file to the backup storage device to generate the portion of the full image backup. The data protection agent may also write the file system metadata associated with the file to the backup metadata associated with the full image backup. Thus, the file may be included in the backup. Without departing from the embodiments disclosed herein, the file data may be written to the backup storage device using the data run to generate the portion of the full image backup via other and / or additional methods.
[0160] In step 520, it is determined whether there are additional files associated with the VM. As discussed above, the data protection agent can mark or otherwise indicate file identifiers of files of the VM whether they have been selected. In one or more embodiments, the data protection manager can parse the file system metadata associated with the VM to check whether there are any file identifiers that have not been marked or otherwise indicate that they have been selected. The data protection agent can remove the tag after each file associated with the VM has been selected. In one or more embodiments disclosed herein, if the data protection agent identifies a file identifier that has not been marked or otherwise indicates that it has been selected, the data protection agent can determine that there are additional files associated with the VM. In one or more embodiments disclosed herein, if the data protection agent does not identify any file identifier that has not been marked or otherwise indicates that it has been selected, the data protection agent can determine that there are no additional files associated with the VM. Without departing from the embodiments disclosed herein, it may be determined via other and / or additional methods whether there are additional files associated with the VM.
[0161] In one or more embodiments disclosed herein, if it is determined that additional files exist in the virtual hard disk, the method proceeds to step 512. In one or more embodiments disclosed herein, if it is determined that additional files do not exist in the virtual hard disk, the method ends after step 520.
[0162] Figure 5B A flow chart of a method for performing incremental backup by exclusion according to one or more embodiments disclosed herein is shown. Figure 5B The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 5B All or part of the method. Figure 5B Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0163] Initially, in step 530, an incremental image backup generation request associated with a virtual machine (VM) is obtained from a data protection manager. In one or more embodiments, the data protection agent may obtain a request to generate an incremental image backup from a data protection manager associated with the VM. The data protection agent may identify the receipt of the request as a backup generation event. The request may include a VM identifier associated with the VM to which the request is directed. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices that will store the backup to be generated. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation. In one or more embodiments, the data protection manager may send a request based on a protection policy associated with an application or a file system. The protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a time point for generating a backup, backup storage information associated with one or more backup storage devices for storing a backup and / or a portion of a backup, etc.). Protection policies may be generated by a user and provided to a data protection manager, which may monitor the protection policies to initiate execution of data protection services according to backup requirements specified by the protection policies.
[0164] In another embodiment, the data protection manager may send a backup generation request in response to an on-demand backup generation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand backup generation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand backup generation request may include backup storage information associated with one or more backup storage devices used to store backups and / or portions of backups, and / or other information associated with the backup generation.
[0165] An incremental image backup generation request associated with a VM may be obtained from a data protection manager via other and / or additional methods without departing from the embodiments disclosed herein.
[0166] In step 532, a list of files to be excluded from the image backup is obtained from the data protection manager. In one or more embodiments, the data protection manager may send a list of files to be excluded from the full image backup (e.g., file identifiers associated with the files) to the data protection agent. The list of data files to be excluded from the image backup may be generated by a user. Without departing from the embodiments disclosed herein, the list of files may be sent to the data protection agent using any suitable data transmission method. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection manager may transmit the list of files as a message including one or more network packets. Without departing from the embodiments disclosed herein, the list of files to be excluded from the image backup may be obtained from the data protection manager via other and / or additional methods.
[0167] In step 534, a checkpoint of the VM is generated. In one or more embodiments, the data protection agent may generate or initiate generation of a checkpoint of the VM associated with the image backup. In one or more embodiments, a VM checkpoint may refer to a differential file or snapshot that captures the state, data, and / or hardware configuration of the VM in operation. The checkpoint may ensure that the image of the VM is good and does not change during the backup generation. Checkpoints of the VM may be generated via other and / or additional methods without departing from the embodiments disclosed herein.
[0168] In step 536, changed blocks associated with the VM are obtained. In one or more embodiments, the data protection agent may obtain changed blocks associated with the VM using a changed block tracking (CBT) service (e.g., computer instructions) that monitors data blocks of the VM over time when executed by a processor of the host. The data protection agent may request and obtain changed blocks that have changed since the CBT service generated a previous backup of the VM. Without departing from the embodiments disclosed herein, other block monitoring services (e.g., Resilient Change Tracking (RCT)) may be used. Without departing from the embodiments disclosed herein, changed blocks associated with the VM may be obtained via other and / or additional methods.
[0169] In step 538, file system metadata associated with the VM is obtained. As discussed above, the host's storage device may include a file system metadata repository that stores information associated with the VM's files included in the host file system generated by the host's users and / or the VM during execution of computer-implemented services. The data protection agent can obtain the file system metadata associated with the VM from the file system metadata repository. The data protection agent can use the VM identifier to obtain the file system metadata associated with the VM. The data protection agent can use other appropriate methods, frameworks, or techniques to obtain file system metadata and other information about the host's applications (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, the file system metadata associated with the application can be obtained via other and / or additional methods.
[0170] In step 540, data runs associated with each file associated with the VM are queried. As discussed above, each file stored on the host can be associated with one or more data runs as specified in the file system metadata. In one or more embodiments, the data protection agent can use the obtained file system metadata to parse the file system metadata to obtain the data runs associated with each file of the VM. Without departing from the embodiments disclosed herein, the data runs associated with each file of the VM can be queried from the file system metadata via other and / or additional methods.
[0171] In step 542, an excluded portion of a data run associated with a changed block included in a list of files to be excluded from an image backup is identified. Each data run corresponding to a data block obtained as a result of the query in step 540 can be associated with a file identifier included in file system metadata. The data protection agent can use the file system metadata to identify a data block identifier associated with each file included in the list of files to be excluded from a backup. In one or more embodiments, the data protection agent can compare the data block identifier associated with each obtained data run with the data block identifier associated with the file identifier in the list of files to be excluded from a backup. The portion of the data run associated with the file identifier included in the list of files to be excluded can be identified as an excluded portion of the data run. Without departing from the embodiments disclosed herein, an excluded portion of a data run associated with a data block of a file included in a list of files to be excluded from an image backup can be identified via other and / or additional methods.
[0172] In step 544, a data block from among the changed data blocks is selected. In one or more embodiments, the data protection agent may use the obtained file system metadata to select a data block identifier from among the changed blocks. The data block associated with the selected data block identifier may be the selected data block. The data protection agent may select the first data block from among the changed data blocks that has not yet been selected. Alternatively, the data protection agent may select a random data block from among among the changed data blocks that has not yet been selected. After selecting the data block, the data protection agent may mark the data block or data block identifier or otherwise indicate that the data block has been selected to avoid selecting a previously selected data block. Without departing from the embodiments disclosed herein, the data block from among the changed data blocks may be selected via other and / or additional methods.
[0173] In step 546, a determination is made as to whether a data run of the data block is included in an excluded portion of data runs. In one or more embodiments, the data protection agent may compare the data run associated with the selected data block with the data run included in the excluded portion. In one or more embodiments, if the data run of the selected data block matches the data run included in the excluded portion, the data protection agent may determine that the data run of the data block is included in the excluded portion of data runs. In one or more embodiments, if the data run of the selected data block does not match any data run included in the excluded portion, the data protection agent may determine that the data run of the data block is not included in the excluded portion of data runs. Without departing from the embodiments disclosed herein, determination as to whether a data run of a data block is included in the excluded portion of data runs may be made via other and / or additional methods.
[0174] In one or more embodiments disclosed herein, if it is determined that the data run of the data block is included in the excluded portion of the data run, the method proceeds to step 548. In one or more embodiments disclosed herein, if it is determined that the data run of the data block is not included in the excluded portion of the data run, the method proceeds to step 550.
[0175] In step 548, data blocks are skipped using a data run. In one or more embodiments, the data protection agent can skip selected data blocks corresponding to a data run. The data protection agent can also skip including file system metadata associated with the data blocks in backup metadata associated with the backup. Thus, the data blocks can be excluded from the backup. Data runs can be used to skip data blocks via other and / or additional methods without departing from the embodiments disclosed herein.
[0176] In step 550, the data blocks are written to the backup storage device using the data runs to generate portions of the incremental image backup. In one or more embodiments, the data protection agent may write the data blocks corresponding to the data runs of the selected data blocks to the backup storage device to generate portions of the incremental image backup. The data protection agent may also write file system metadata associated with the data blocks to the backup metadata associated with the incremental image backup. Thus, the data blocks may be included in the backup. Without departing from the embodiments disclosed herein, the data blocks may be written to the backup storage device using the data runs to generate portions of the incremental image backup via other and / or additional methods.
[0177] In step 552, it is determined whether there are additional changed blocks. As discussed above, the data protection agent may mark or otherwise indicate whether the data block identifiers of the changed blocks of the VM have been selected. In one or more embodiments, the data protection manager may parse the list of changed blocks associated with the VM to check whether there are any data block identifiers that have not been marked or otherwise indicate that they have been selected. The data protection agent may remove the tag after each file associated with the VM has been selected. In one or more embodiments disclosed herein, if the data protection agent identifies a data block identifier that has not been marked or otherwise indicates that it has been selected, the data protection agent may determine that there are additional data blocks associated with the VM. In one or more embodiments disclosed herein, if the data protection agent does not identify any data block identifier that has not been marked or otherwise indicates that it has been selected, the data protection agent may determine that there are no additional data blocks in the list of changed blocks associated with the VM. Without departing from the embodiments disclosed herein, it may be determined via other and / or additional methods whether there are additional data blocks associated with the VM.
[0178] In one or more embodiments disclosed herein, if it is determined that there are additional change blocks, the method proceeds to step 544. In one or more embodiments disclosed herein, if it is determined that there are no additional change blocks, the method ends after step 552.
[0179] Fig. 6A A flow chart of a method for performing a full image backup through indexing according to one or more embodiments disclosed herein is shown. Fig. 6A The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Fig. 6A All or part of the method. Fig. 6AShown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0180] Initially, in step 600, a full image backup generation request associated with a virtual machine (VM) is obtained from a data protection manager. In one or more embodiments, a full image backup generation request associated with a virtual machine (VM) is obtained from a data protection manager. In one or more embodiments, a data protection agent may obtain a request to generate a full image backup from a data protection manager associated with a VM. The data protection agent may identify the receipt of a request as a backup generation event. The request may include a VM identifier associated with the VM for which the request is directed. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices that will store the backup to be generated. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation. In one or more embodiments, the data protection manager may send the request based on a protection policy associated with an application or a file system. The protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a point in time for generating a backup, backup storage information associated with one or more backup storage devices for storing a backup and / or a portion of a backup, etc.). Protection policies may be generated by a user and provided to a data protection manager, which may monitor the protection policies to initiate execution of data protection services according to backup requirements specified by the protection policies.
[0181] In another embodiment, the data protection manager may send a backup generation request in response to an on-demand backup generation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand backup generation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand backup generation request may include backup storage information associated with one or more backup storage devices used to store backups and / or portions of backups, and / or other information associated with the backup generation.
[0182] A full image backup generation request associated with a VM may be obtained from a data protection manager via other and / or additional methods without departing from the embodiments disclosed herein.
[0183] In step 602, a checkpoint of the VM is generated. In one or more embodiments, the data protection agent can generate or initiate the generation of a checkpoint of the VM associated with the image backup. In one or more embodiments, the VM checkpoint can refer to a differential file or snapshot that captures the state, data, and / or hardware configuration of the VM in operation. The checkpoint can ensure that the image of the VM is good and does not change during the backup generation. Without departing from the embodiments disclosed herein, the checkpoint of the VM can be generated via other and / or additional methods.
[0184] In step 604, file system metadata associated with the VM is obtained. As discussed above, the storage device of the host may include a file system metadata repository that stores information associated with files of the VM included in a host file system generated by a user of the host and / or the VM during execution of a computer-implemented service. The data protection agent may obtain the file system metadata associated with the VM from the file system metadata repository. The data protection agent may use a VM identifier to obtain the file system metadata associated with the VM. The data protection agent may use other appropriate methods, frameworks, or techniques to obtain the file system metadata and other information about the host's application (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, the file system metadata associated with the application may be obtained via other and / or additional methods.
[0185] In step 606, the file data included in the virtual hard disk file associated with the VM is written to the backup storage device. In one or more embodiments, the data protection agent can write one or more data blocks associated with the VM to the backup storage device to generate a full image backup. Thus, the files of the VM can be included in the backup. Without departing from the embodiments disclosed herein, the file data included in the virtual hard disk file associated with the VM can be written to the backup storage device via other and / or additional methods.
[0186] In step 608, backup metadata is generated using the file system metadata, and a copy of the backup metadata is stored together with the file data to generate a full image backup. In one or more embodiments, the data protection agent can generate backup metadata based on the backup and file system metadata. The data protection manager can generate and include checksums (discussed below) associated with the files included in the backup, and include the checksums in the backup metadata. The data protection agent can generate a backup metadata file and include all or part of the file system metadata in the backup metadata file. Thus, for each file, the backup metadata can include a file identifier associated with the file, a file name associated with the file, a data run associated with each file, an application identifier associated with the file, and a parent file or folder associated with the file. Without departing from the embodiments disclosed herein, the backup metadata can include other and / or additional information.
[0187] In one or more embodiments, a data run may be associated with a data block of a file. Each file may include one or more data blocks. A data run may include an offset and a data block range. An offset may refer to one or more data structures that specify a distance from a reference point in a backup storage device based on a file system, and the backup storage device based on a file system includes a starting point of a file in a storage volume (e.g., a virtual hard disk on a host or a backup storage device). A distance may refer to the number of physical addresses or the amount of data (e.g., bytes) between a reference point in a storage device and a starting point of a file. A reference point may be a physical address of a first file including a backup, or a base address in a storage device. Since backups may be stored according to a hierarchical structure of files included in a backup storage device, an offset may be used to collect only explicitly requested files in a backup during a backup access service. An offset may be derived from the backup itself or file system metadata (e.g., a parent file identifier and the size or length of each file). Without departing from the embodiments disclosed herein, an offset may include other and / or additional information.
[0188] In one or more embodiments, a data block range may refer to one or more data structures that specify where data blocks and / or portions of data blocks of block-based backup and files start and end in a host's storage device and / or backup storage device. The data block range may be obtained by a data protection agent based on file system metadata and / or backup. The data block range may be a pointer to the location where a portion of a data block or data block backed up in a reference backup storage device starts and ends. The data block range may be used to identify and obtain specific data blocks for block-based backup. Each data block range in the data block range may be associated with a backed-up data block or portion of a data block. Each data block range may be mapped to a file identifier of a file in a file system or otherwise associated with the file identifier. Without departing from the embodiments disclosed herein, the data block range may include other and / or additional information and may be used for other and / or additional purposes.
[0189] The data protection agent may also include backup information in the backup metadata, which may include an assigned backup identifier associated with the backup, a creation timestamp associated with the backup, a backup type (e.g., a full image backup or an incremental image backup), and a target backup storage device for the backup (e.g., as specified by a backup request obtained from the data protection manager). If more than one backup storage device is used to store portions of the backup, the backup metadata file may be updated to include multiple instances of backup information associated with each backup storage device. The backup metadata may be written to the backup storage device and included in the full image backup. Without departing from the embodiments disclosed herein, the backup metadata may be generated based on the file system metadata, and copies of the backup and the backup metadata may be stored with the file data to generate a full image backup via other and / or additional methods.
[0190] In step 610, the backup metadata and the backup copy are provided to the index engine for indexing. In one or more embodiments, the data protection agent sends the backup metadata and the backup copy to the index engine ( Figures 1A to 1C ). The indexing engine may be included in the data protection manager or otherwise operably connected to the data protection manager. The indexing engine may be computer instructions that, when executed by a processor (e.g., of the data protection manager or another entity), may index the backups using the backup metadata. Indexing may refer to parsing the backups and classifying the backup contents to quickly identify and obtain specific portions of the backups. In response to obtaining the backup metadata and the backups, the indexing engine indexes the backups using the backup metadata. Without departing from the embodiments disclosed herein, the backup metadata and a copy of the backup may be sent to the indexing engine via other and / or additional methods.
[0191] In one or more embodiments disclosed herein, the method ends after step 610 .
[0192] Figure 6B A flow chart of a method for performing incremental image backup through indexing according to one or more embodiments disclosed herein is shown. Figure 6B The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1B Without departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 6B All or part of the method. Figure 6B Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0193] Initially, in step 620, an incremental image backup generation request associated with a virtual machine (VM) is obtained from a data protection manager. In one or more embodiments, the data protection agent may obtain a request to generate an incremental image backup from a data protection manager associated with the VM. The data protection agent may identify the receipt of the request as a backup generation event. The request may include a VM identifier associated with the VM to which the request is directed. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices that will store the backup to be generated. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation. In one or more embodiments, the data protection manager may send a request based on a protection policy associated with an application or a file system. The protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a time point for generating a backup, backup storage information associated with one or more backup storage devices for storing a backup and / or a portion of a backup, etc.). Protection policies may be generated by a user and provided to a data protection manager, which may monitor the protection policies to initiate execution of data protection services according to backup requirements specified by the protection policies.
[0194] In another embodiment, the data protection manager may send a backup generation request in response to an on-demand backup generation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand backup generation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand backup generation request may include backup storage information associated with one or more backup storage devices used to store backups and / or portions of backups, and / or other information associated with the backup generation.
[0195] An incremental image backup generation request associated with a VM may be obtained from a data protection manager via other and / or additional methods without departing from the embodiments disclosed herein.
[0196] In step 622, a checkpoint of the VM is generated. In one or more embodiments, the data protection agent may generate or initiate generation of a checkpoint of the VM associated with the image backup. In one or more embodiments, a VM checkpoint may refer to a differential file or snapshot that captures the state, data, and / or hardware configuration of the VM in operation. The checkpoint may ensure that the image of the VM is good and does not change during the backup generation. Checkpoints of the VM may be generated via other and / or additional methods without departing from the embodiments disclosed herein.
[0197] In step 624, current file system metadata associated with the VM is obtained. As discussed above, the storage device of the host may include a file system metadata repository that stores information associated with files included in the host file system generated by the user of the host and / or the VM during the execution of a computer-implemented service. The current file system metadata may be associated with the current state of the file system. In other words, the current file system metadata may be associated with the current data stored in the file system on the host, while the backup metadata may be associated with a backup of a previous state of the file system (or a portion of the file system associated with the application). The data protection agent may obtain the current file system metadata associated with the VM from the file system metadata repository. The data protection agent may use a VM identifier to obtain the file system metadata associated with the VM. The data protection manager may use other appropriate methods, frameworks, or techniques to obtain file system metadata and other information about the host's application (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, the current file system metadata associated with the VM may be obtained via other and / or additional methods.
[0198] In step 626, the previous backup metadata is associated with the previous backup of the VM. In one or more embodiments, the data protection agent sends a request for backup metadata associated with the backup associated with the application to the data protection manager. The request may include a VM identifier associated with the VM and / or a backup identifier associated with the backup corresponding to the VM. In response to obtaining the request, the data protection manager obtains the backup metadata associated with the latest backup of the VM or the backup specified by the backup identifier and sends the backup metadata to the data protection agent. Without departing from the embodiments disclosed herein, any appropriate data transmission method can be used to provide backup metadata and requests to and from the data protection agent. For example, by operably connecting the data protection agent to one or more network devices of the data protection manager, the data protection agent can transmit the request as a message including one or more network packets. In addition, by operably connecting the data protection agent and one or more network devices of the data protection manager, the data protection manager can transmit the backup metadata as a message including one or more network packets. Without departing from the embodiments disclosed herein, the backup previous metadata associated with the previous backup of the VM can be obtained from the data protection manager via other and / or additional methods.
[0199] In step 628, updated file system metadata is generated by comparing the current file system metadata with the previous backup metadata, by including a status indicator associated with each file. In one or more embodiments, the data protection agent can compare the current file system metadata with the previous backup metadata to generate a status indicator associated with each file. The status indicator can refer to a label, a flag, or other indication that the specified file is new, deleted, modified, or unmodified. In one or more embodiments, for each file, the data protection agent can compare the current data run of the current file system metadata with the backup data run of the previous backup metadata to generate a status indicator associated with each file. The current data run and the backup data run of the unmatched file data blocks can include different data. This may be because the data has been modified since the previous backup was generated. Therefore, the data protection agent can generate a status indicator that the specified file is a modified file. Alternatively, if the current data run and the backup data run of the data blocks of the file match, the corresponding data blocks in the host file and the backup file can match, indicating that the file remains unchanged since the previous backup was generated. Therefore, the data protection agent can generate a status indicator that the specified file is an unmodified file. In addition, a file included in the current data run but not included in the backup data run can be associated with a new file generated after the previous backup was generated. Therefore, the data protection agent can generate a status indicator specifying that this file is a new file. Finally, a file included in the backup data run but not included in the current data run can be associated with a deleted file that was deleted after the previous backup was generated. Therefore, the data protection agent can generate a status indicator specifying that this file is a deleted file. Without departing from the embodiments disclosed herein, updated file system metadata can be generated by including status indicators associated with each file by comparing current file system metadata and previous backup metadata via other and / or additional methods.
[0200] In step 630, the changed blocks included in the virtual hard disk file associated with the VM are written to the backup storage device. In one or more embodiments, the data protection agent can obtain the changed blocks associated with the VM using a change block tracking (CBT) service (e.g., a computer instruction), which monitors the data blocks of the VM over time when executed by the processor of the host. The data protection agent can request and obtain the changed blocks that have changed since the CBT service generated the previous backup of the VM. Without departing from the embodiments disclosed herein, other block monitoring services (e.g., elastic change tracking (RCT)) can be used. Without departing from the embodiments disclosed herein, the changed blocks associated with the VM can be obtained via other and / or additional methods. In one or more embodiments, the data protection agent can then write one or more data blocks associated with the changed blocks to the backup storage device to generate an incremental image backup. Therefore, the changed files of the VM can be included in the backup. Without departing from the embodiments disclosed herein, the file data included in the virtual hard disk file associated with the VM can be written to the backup storage device via other and / or additional methods.
[0201] In step 632, incremental backup metadata is generated using the updated file system metadata, and a copy of the incremental backup metadata is stored with the changed blocks to generate an incremental image backup. In one or more embodiments, the data protection agent can generate incremental backup metadata based on the backup and the updated file system metadata. The data protection manager can generate and include checksums (discussed below) associated with the files included in the backup, and include the checksums in the incremental backup metadata. The data protection agent can generate an incremental backup metadata file and include all or part of the updated file system metadata in the incremental backup metadata file. Therefore, for each file, the incremental backup metadata can include a file identifier associated with the file, a file name associated with the file, a data run associated with each file, an application identifier associated with the file, a status indicator, and a parent file or folder associated with the file. Without departing from the embodiments disclosed herein, the incremental backup metadata can include other and / or additional information.
[0202] In one or more embodiments, a data run may be associated with a data block of a file. Each file may include one or more data blocks. A data run may include an offset and a data block range. An offset may refer to one or more data structures that specify a distance from a reference point in a backup storage device based on a file system, and the backup storage device based on a file system includes a starting point of a file in a storage volume (e.g., a virtual hard disk on a host or a backup storage device). A distance may refer to the number of physical addresses or the amount of data (e.g., bytes) between a reference point in a storage device and a starting point of a file. A reference point may be a physical address of a first file including a backup, or a base address in a storage device. Since backups may be stored according to a hierarchical structure of files included in a backup storage device, an offset may be used to collect only explicitly requested files in a backup during a backup access service. An offset may be derived from the backup itself or file system metadata (e.g., a parent file identifier and the size or length of each file). Without departing from the embodiments disclosed herein, an offset may include other and / or additional information.
[0203] In one or more embodiments, a data block range may refer to one or more data structures that specify where data blocks and / or portions of data blocks of block-based backup and files start and end in a host's storage device and / or backup storage device. A data protection agent may obtain a data block range based on updated file system metadata and / or backup. A data block range may be a pointer that references the location where a data block or portion of a data block backed up in a backup storage device starts and ends. A data block range may be used to identify and obtain specific data blocks for a block-based backup. Each data block range in a data block range may be associated with a backed-up data block or portion of a data block. Each data block range may be mapped to a file identifier of a file in a file system or otherwise associated with the file identifier. Without departing from the embodiments disclosed herein, a data block range may include other and / or additional information and may be used for other and / or additional purposes.
[0204] The data protection agent may also include the backup information in incremental backup metadata, which may include an assigned backup identifier associated with the backup, a creation timestamp associated with the backup, a backup type (e.g., a full image backup or an incremental image backup), and a target backup storage device for the backup (e.g., as specified by a backup request obtained from the data protection manager). If more than one backup storage device is used to store portions of the backup, the incremental backup metadata file may be updated to include multiple instances of backup information associated with each backup storage device. The incremental backup metadata may be written to the backup storage device and included in the incremental image backup. Without departing from the embodiments disclosed herein, the incremental backup metadata may be generated based on the updated file system metadata, and copies of the backup and incremental backup metadata may be stored with the file data to generate incremental image backups via other and / or additional methods.
[0205] In step 634, the incremental backup metadata and the copy of the backup are provided to the indexing engine for indexing. In one or more embodiments, the data protection agent sends the incremental backup metadata and the copy of the backup to the indexing engine ( Figures 1A to 1C ). As discussed above, the indexing engine may be included in the data protection manager or otherwise operably connected to the data protection manager. As also discussed above, the indexing engine may be computer instructions that, when executed by a processor (e.g., of the data protection manager or another entity), may index the backup using incremental backup metadata. Indexing may refer to parsing the backup and classifying the backup contents to quickly identify and obtain specific portions of the backup. The indexing engine may specifically use status indicators of the incremental backup metadata to parse and classify only new and modified files without fully parsing the entire incremental backup and the previous full backup to determine which files have been changed, modified, deleted, or unmodified, thereby significantly reducing the load on the indexing engine. In response to obtaining the incremental backup metadata and the backup, the indexing engine indexes the incremental backup using the incremental backup metadata. Without departing from the embodiments disclosed herein, the incremental backup metadata and a copy of the incremental backup may be sent to the indexing engine via other and / or additional methods.
[0206] In one or more embodiments disclosed herein, the method ends after step 634 .
[0207] Figure 7 A flow chart of a method for performing a virtual synthetic full backup through post-processing according to one or more embodiments disclosed herein is shown. Figure 7 The method shown in can be implemented by, for example, a data protection agent (e.g., 106, Figure 1BWithout departing from the scope of the embodiments described herein, Figures 1A to 1C Other components of the system can perform Figure 7 All or part of the method. Figure 7 Shown as a series of steps, however, any steps may be omitted, performed in a different order, additional steps may be included, and / or any or all steps may be performed in parallel and / or in a partially overlapping manner without departing from the scope of the embodiments described herein.
[0208] Initially, in step 700, an incremental image backup generation request associated with a virtual machine (VM) is obtained from a data protection manager. In one or more embodiments, the data protection agent may obtain a request to generate an incremental image backup from a data protection manager associated with the VM. The data protection agent may identify the receipt of the request as a backup generation event. The request may include a VM identifier associated with the VM to which the request is directed. In one or more embodiments, the request may include backup storage information associated with one or more backup storage devices that will store the backup to be generated. The backup storage information may include a backup storage identifier, a backup storage type, and / or connection information (e.g., a network address, an IP address, etc.). Without departing from the embodiments disclosed herein, the request may include other and / or additional information associated with the backup generation. In one or more embodiments, the data protection manager may send a request based on a protection policy associated with an application or a file system. The protection policy may be a data structure that specifies backup requirements (e.g., a backup schedule that specifies a time point for generating a backup, backup storage information associated with one or more backup storage devices for storing a backup and / or a portion of a backup, etc.). Protection policies may be generated by a user and provided to a data protection manager, which may monitor the protection policies to initiate execution of data protection services according to backup requirements specified by the protection policies.
[0209] In another embodiment, the data protection manager may send a backup generation request in response to an on-demand backup generation request submitted by a user of the system. Without departing from the embodiments disclosed herein, the user may submit the on-demand backup generation request through any type of user interface (e.g., a graphical user interface). Without departing from the embodiments disclosed herein, the on-demand backup generation request may include backup storage information associated with one or more backup storage devices used to store backups and / or portions of backups, and / or other information associated with the backup generation.
[0210] An incremental image backup generation request associated with a VM may be obtained from a data protection manager via other and / or additional methods without departing from the embodiments disclosed herein.
[0211] In step 702, a checkpoint of the VM is generated. In one or more embodiments, the data protection agent can generate or initiate the generation of a checkpoint of the VM associated with the image backup. In one or more embodiments, the VM checkpoint can refer to a differential file or snapshot that captures the state, data, and / or hardware configuration of the VM in operation. The checkpoint can ensure that the image of the VM is good and does not change during the backup generation. Without departing from the embodiments disclosed herein, the checkpoint of the VM can be generated via other and / or additional methods.
[0212] In step 704, a list of changed data blocks associated with the VM is obtained. In one or more embodiments, the data protection agent can obtain the changed blocks associated with the VM using a changed block tracking (CBT) service (e.g., computer instructions) that monitors the data blocks of the VM over time when executed by a processor of the host. The data protection agent can request and obtain changed blocks that have changed since the CBT service generated a previous backup of the VM. Without departing from the embodiments disclosed herein, other block monitoring services (e.g., Resilient Change Tracking (RCT)) can be used. Without departing from the embodiments disclosed herein, changed blocks associated with the VM can be obtained via other and / or additional methods.
[0213] In step 706, a copy of the changed data blocks included in the virtual hard disk associated with the VM is written to the backup storage device. In one or more embodiments, the data protection agent can then write one or more data blocks associated with the changed blocks to the backup storage device to generate an incremental image backup. Thus, the changed files of the VM can be included in the backup. Without departing from the embodiments disclosed herein, the file data included in the virtual hard disk file associated with the VM can be written to the backup storage device via other and / or additional methods.
[0214] In step 708, a virtual synthetic full backup is generated on a backup storage device using the changed data blocks and the previous backup of the VM. In one or more embodiments, the data protection agent may send a request to the backup storage device to generate a virtual synthetic full backup. In response to obtaining the request, the backup storage device may merge the changed data blocks of the incremental image backup with the previous backup of the VM (a previous full backup or a previous virtual synthetic full backup) to generate a virtual synthetic full backup. Without departing from the embodiments disclosed herein, the virtual synthetic full backup may be generated on the backup storage device using the changed data blocks and the previous backup of the VM via other and / or additional methods.
[0215] In step 710, file system metadata associated with the VM is obtained. As discussed above, the storage device of the host may include a file system metadata repository that stores information associated with files of the VM included in a host file system generated by a user of the host and / or the VM during execution of a computer-implemented service. The data protection agent may obtain the file system metadata associated with the VM from the file system metadata repository. The data protection agent may use a VM identifier to obtain the file system metadata associated with the VM. The data protection agent may use other appropriate methods, frameworks, or techniques to obtain the file system metadata and other information about the host's application (e.g., Volume Shadow Copy Service (VSS)). Without departing from the embodiments disclosed herein, the file system metadata associated with the application may be obtained via other and / or additional methods.
[0216] In step 712, post-processing metadata is generated by mapping the list of changed data blocks to file system metadata entries. As discussed above, the file system metadata may include entries associated with each file, the entries including a file identifier associated with the file, a file length or size, one or more data runs associated with one or more data blocks of the file, a data block identifier associated with one or more data blocks of the file, a creation date, a modification date, an application identifier associated with the file, and a parent file or folder associated with the file. In addition, the list of changed data blocks (i.e., data block identifiers associated with the changed data blocks) may not include data runs or other storage locations associated with data blocks included in the changed data blocks. Therefore, the data protection agent may map the file system metadata entries for each file with the changed data blocks to generate post-processing metadata. Therefore, each changed data block included in the incremental image backup and the corresponding virtual full synthetic backup can be located using the file system metadata entry mapped thereto in the post-processing metadata. Without departing from the embodiments disclosed herein, post-processing metadata may be generated by mapping the list of changed data blocks to the file system metadata entries via other and / or additional methods.
[0217] In step 714, the post-processing metadata is written to the backup storage device and included in the virtual synthetic full backup. In one or more embodiments, the data protection agent can then write the post-processing metadata to the backup storage device to include the post-processing metadata and the virtual synthetic full backup associated with the post-processing metadata. Thus, the post-processing metadata can be used to perform post-processing on the changed data blocks included in the virtual synthetic full backup. Without departing from the embodiments disclosed herein, the post-processing metadata can be written to the backup storage device and included in the virtual synthetic full backup via other and / or additional methods.
[0218] In step 716, post-processing of the virtual synthetic full backup is initiated using post-processing metadata. In one or more embodiments, a post-processing engine may be included in a backup storage device or otherwise operably connected to the backup storage device. The post-processing engine may be a computer instruction that, when executed by a processor (e.g., of a backup storage device or another entity), may perform data analysis operations or other post-processing operations on the virtual synthetic full backup when such backup is stored in the backup storage device using post-processing metadata. Without departing from the embodiments disclosed herein, the data analysis operations may include authentication, security threat detection, anomaly detection, and other and / or additional machine learning or artificial intelligence operations. The post-processing engine may specifically use post-processing metadata to provide context about where the changed data blocks are located in the backup storage device, the files to which they belong, and other insights required to perform post-processing. Without these insights provided by the post-processing metadata, the virtual synthetic full backup may not be able to process the changed blocks. Without departing from the embodiments disclosed herein, post-processing metadata may be used via other and / or additional methods to initiate post-processing of the virtual synthetic full backup.
[0219] In one or more embodiments disclosed herein, the method ends after step 716 .
[0220] As discussed above, embodiments of the present invention may be implemented using a computing device. Figure 8 A diagram of a computing device according to one or more embodiments of the present invention is shown. The computing device (800) may include one or more computer processors (802), non-persistent storage devices (804) (e.g., volatile memory, such as random access memory (RAM), cache memory), persistent storage devices (806) (e.g., hard disk, optical drive such as compact disk (CD) drive or digital versatile disk (DVD) drive, flash memory, etc.), communication interface (812) (e.g., Bluetooth interface, infrared interface, network interface, optical interface, etc.), input device (810), output device (808), and many other elements (not shown) and functions. Each of these components is described below.
[0221] In one embodiment of the present invention, the computer processor (802) can be an integrated circuit for processing instructions. For example, the computer processor can be one or more cores or microcores of a processor. The computing device (800) can also include one or more input devices (810), such as a touch screen, a keyboard, a mouse, a speaker, a touchpad, an electronic pen, or any other type of input device. In addition, the communication interface (812) can include an integrated circuit for connecting the computing device (800) to a network (not shown) (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet, a mobile network, or any other type of network) and / or another device (e.g., another computing device).
[0222] In one embodiment of the invention, the computing device (800) may include one or more output devices (808), such as a screen (e.g., a liquid crystal display (LCD), a plasma display, a touch screen, a cathode ray tube (CRT) monitor, a projector, or other display device), a printer, an external storage device, or any other output device. One or more of the output devices may be the same as or different from the input device. The input and output devices may be connected locally or remotely to the computer processor (802), the non-persistent storage device (804), and the persistent storage device (806). There are many different types of computing devices, and the aforementioned input and output devices may take other forms.
[0223] As used herein, the phrase operably connected or operably connected means that there is a direct or indirect connection between elements / components / devices that allows the elements to interact in some manner. For example, the phrase "operably connected" can refer to any direct connection (e.g., a direct wired connection between two devices or components) or indirect connection (e.g., a wired and / or wireless connection between any number of devices or components that connect operably connected devices). Thus, any path through which information can travel can be considered an operably connected.
[0224] As used herein, an entity that is programmed or configured to perform a function (e.g., a step, an action, etc.) refers to one or more hardware devices (e.g., a processor, a digital signal processor, a field programmable gate array, an application specific integrated circuit, etc.) that provide the function. The hardware device can be programmed to do so by, for example, being able to execute computer instructions (e.g., computer code) that cause the hardware device to provide the function. In another example, the hardware device can be programmed to do so by having a circuit system that has been adapted (e.g., modified) to perform the function. An entity that is programmed to perform a function does not include computer instructions that are separate from any hardware device. Computer instructions can be used to program a hardware device that provides the function when programmed.
[0225] The problems discussed above should be understood as examples of problems solved by embodiments of the invention of the present invention, and the invention should not be limited to solving the same / similar problems. The disclosed invention is broadly applicable to solving a range of problems beyond those discussed herein.
[0226] One or more embodiments of the present invention may be implemented using instructions executed by one or more processors of a computing device. In addition, such instructions may correspond to computer-readable instructions stored on one or more non-transitory computer-readable media.
[0227] Although the present invention has been described above with respect to a limited number of embodiments, those skilled in the art having benefit of this disclosure will appreciate that other embodiments may be conceived without departing from the scope of the invention. Accordingly, the scope of the present invention shall be limited solely by the appended claims.
Claims
1. A method for performing recovery of file system data on a host, the method comprising: identifying, by a data protection agent of a host, a recovery event associated with a file system of the host; In response to identifying the resume event: obtaining backup metadata associated with a backup of the file system, wherein the backup metadata includes previously generated checksums of files included in the file system when the backup was generated; obtaining current file system metadata associated with the file system from a file system metadata repository on a storage device of the host; generating a current checksum of the file of the file system using the current file system metadata; identifying non-matching files and matching files using the previously generated checksum and the current checksum; storing a local copy of the matching file on the host to restore the matching file; obtaining, from the current file system metadata, a current data run associated with the non-matching file; obtaining, from the backup metadata, a backup data run associated with the non-matching file; identifying, based on the current data run and the backup data run, a matching portion of the non-matching file, a non-matching portion of the non-matching file, and a completely unique file of the non-matching file; storing a local copy of the matching portion of the non-matching file on the host to restore the matching portion of the non-matching file; as well as The completely unique file of the non-matching file and the non-matching portion of the non-matching file are restored from a backup storage device including the backup.
2. The method of claim 1, wherein identifying the non-matching files and the matching files comprises: selecting a first file among said files; In response to selecting the first file: comparing a first previously generated checksum of the previously generated checksums corresponding to the first file with a first current checksum of the current checksums corresponding to the first file; as well as making a first determination that the first previously generated checksum does not match the first current checksum; In response to the first determination, making a second determination that the non-matching files include the first file; and A second one of the files is selected.
3. The method of claim 2, further comprising: In response to selecting the second file: comparing a second previously generated checksum of the previously generated checksums corresponding to the second file with a second current checksum of the current checksums corresponding to the second file; as well as making a third determination that the second previously generated checksum matches the second current checksum; and In response to the third determination, a fourth determination is made that the matching files include the second file.
4. The method of claim 1, wherein: matching portions of the matching portions of the non-matching files include data blocks stored on the host that are identical to data blocks included in the backup; and The non-matching portions of the non-matching portions of the non-matching files include data blocks stored on the host that are different from data blocks included in the backup.
5. A method for performing recovery of file system data on a host, the method comprising: identifying, by a data protection agent of a host, a recovery event associated with a file system of the host; In response to identifying the resume event: obtaining backup metadata associated with a backup of the file system, wherein the backup metadata specifies data of files included in the file system when the backup was generated; obtaining current file system metadata associated with the file system from a file system metadata repository on a storage device of the host; identifying non-matching files and matching files using the backup metadata and the current file system metadata; storing a local copy of the matching file on the host to restore the matching file; Based on the current file system metadata and the backup metadata, identifying a matching portion of the non-matching file, a non-matching portion of the non-matching file, and a completely unique file of the non-matching file; storing a local copy of the matching portion of the non-matching file on the host to restore the matching portion of the non-matching file; as well as The completely unique file of the non-matching file and the non-matching portion of the non-matching file are restored from a backup storage device including the backup.
6. The method of claim 5, wherein identifying the matching portion comprises: selecting a first file among said files; In response to selecting the first file: comparing a first previously generated checksum among previously generated checksums included in the backup metadata corresponding to the first file with a first current checksum among current checksums corresponding to the first file, wherein the current checksum is generated using the current file system metadata; as well as making a first determination that the first previously generated checksum does not match the first current checksum; In response to the first determination, making a second determination that the non-matching files include the first file; and A second one of the files is selected.
7. The method of claim 6, further comprising: In response to selecting the second file: comparing a second previously generated checksum of the previously generated checksums corresponding to the second file with a second current checksum of the current checksums corresponding to the second file; as well as making a third determination that the second previously generated checksum matches the second current checksum; and In response to the third determination, a fourth determination is made that the matching files include the second file.
8. The method of claim 6, wherein the first file comprises a first file selected from the group consisting of at least: modified files modified after the point in time when the backup was generated; deleted files deleted after the point in time when the backup was generated; and New files generated after the time point when the backup is generated.
9. The method of claim 8, wherein said second file comprises a file that has not been modified since said generating said backup.
10. The method of claim 5, wherein storing the local copy of the matching file comprises performing a block cloning operation on the matching file.
11. The method of claim 5, wherein storing a local copy of the matching portion of the non-matching file on the host comprises performing a block cloning operation on the matching portion of the non-matching file.
12. The method of claim 5, wherein: matching portions of the matching portions of the non-matching files include data blocks stored on the host that are identical to data blocks included in the backup; and The non-matching portions of the non-matching portions of the non-matching files include data blocks stored on the host that are different from data blocks included in the backup.
13. A method for performing recovery of file system data on a host, the method comprising: identifying, by a data protection agent of a host, a recovery event associated with a file system of the host; In response to identifying the resume event: obtaining backup metadata associated with a backup of the file system, wherein the backup metadata specifies data of files included in the file system when the backup was generated; obtaining current file system metadata associated with the file system from a file system metadata repository on a storage device of the host; identifying non-matching files and matching files using the backup metadata and the current file system metadata; storing a local copy of the matching file on the host to restore the matching file; Based on the current file system metadata and the backup metadata, identifying a matching portion of the non-matching file, a non-matching portion of the non-matching file, and a completely unique file of the non-matching file; storing a local copy of the matching portion of the non-matching file on the host to restore the matching portion of the non-matching file; as well as The completely unique file of the non-matching file and the non-matching portion of the non-matching file are restored from a backup storage device including the backup.
14. The method of claim 13, wherein based on the current file system metadata and the backup metadata, identifying the matching portion of the non-matching file, the non-matching portion of the non-matching file, and the completely unique file of the non-matching file comprises: obtaining, from the current file system metadata, a current data run associated with the non-matching file; obtaining, from the backup metadata, a backup data run associated with the non-matching file; as well as Based on the current data run and the backup data run, matching portions of the non-matching files, non-matching portions of the non-matching files, and completely unique files of the non-matching files are identified.
15. The method of claim 14, wherein: matching portions of the matching portions of the non-matching files include data blocks stored on the host that are identical to data blocks included in the backup; and The non-matching portions of the non-matching portions of the non-matching files include data blocks stored on the host that are different from data blocks included in the backup.
16. The method of claim 14, wherein: A current data run in the current data run specifies an offset and length of a data block of a file in the file currently stored in a storage volume associated with the file system; and A backup data run in the backup data run specifies an offset and a length of the file stored in a storage volume associated with the file system at a point in time when the backup is generated.
17. The method of claim 13, wherein storing the local copy of the matching file comprises performing a block cloning operation on the matching file.
18. The method of claim 13, wherein storing a local copy of the matching portion of the non-matching file on the host comprises performing a block cloning operation on the matching portion of the non-matching file.
19. The method of claim 13, wherein identifying the non-matching files and the matching files comprises: selecting a first file among said files; In response to selecting the first file: making a first determination that a first portion of the backup metadata corresponding to the first file and a first portion of the current file system metadata corresponding to the first file do not match; In response to the first determination, making a second determination that the non-matching files include the first file; and A second one of the files is selected.
20. The method of claim 19, further comprising: In response to selecting the second file: making a third determination that a second portion of the backup metadata corresponding to the second file matches a second portion of the current file system metadata corresponding to the second file; and In response to the third determination, a fourth determination is made that the matching files include the second file.