Accessing data from a backup file system at a specific point-in-time
By generating snapshots and creating a file system index, the method enables quick access to data from a backup file system at any PIT, overcoming the inefficiencies of traditional recovery methods.
Patent Information
- Application Number
- PCT/EP2023/079699
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-10-25
- Publication Date
- 2025-05-01
AI Technical Summary
Existing methods for accessing data from a backup file system at a specific point-in-time (PIT) require recovering the entire file system, which is time-consuming and inefficient.
The method involves generating multiple snapshots of a primary file system at different PITs, selecting the appropriate snapshot based on time intervals, and creating a file system index at the specific PIT to quickly access requested data.
This approach allows for rapid access to data and metadata at any PIT without the need to recover the entire file system, significantly reducing time and storage requirements.
Smart Images

Figure EP2023079699_01052025_PF_FP_ABST
Abstract
Description
[0001] ACCESSING DATA FROM A BACKUP FILE SYSTEM AT A SPECIFIC POINT-IN¬
[0002] TIME
[0003] TECHNICAL FIELD
[0004] The present disclosure relates, in general, to accessing data from a backup file system at a specific point-in-time (PIT).
[0005] BACKGROUND
[0006] A file system is a method and a data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be a single large body of data, with no possibility of telling where a particular piece of data begins and ends, or where a particular piece of data is located. By separating the data into pieces and giving each piece a name, the data can be easily isolated and identified.
[0007] Point-in-time recovery (PITR) in the context of computers involves systems, often databases, whereby an administrator can restore or recover a set of data or a particular setting from a time in the past. In particular, PITR provides an option to restore application data to its state at any time since the base backup was created. PITR provides additional insurance against logical data corruption.
[0008] SUMMARY
[0009] An objective of the present disclosure is to provide a mechanism for quickly reading information from a file system at a specific point-in-time.
[0010] The foregoing and other objectives are achieved by the features of the independent claims.
[0011] Further implementation forms are apparent from the dependent claims, the description and the Figures.
[0012] A first aspect of the present disclosure provides a method of accessing data from a backup file system at a specific point-in-time, PIT, the method comprising generating, by the backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT, receiving a request to access data from the specific PIT, selecting a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT, generating a file system index at the specific PIT, based on the selected snapshot, wherein the file system index comprises a plurality of data names and a plurality of corresponding index nodes used by the file system, each of the plurality of index nodes identifying a location of data in a memory used by the backup file system, detecting whether the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index, and, in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, accessing the requested data using the file system index.
[0013] Accordingly, the user can quickly read data and metadata from a backup file system at any point-in-time without the need to wait for the recovery of the entire file system to the exact PIT. This is achieved through the use of the special data structure (file system index) at a specific PIT, enabling the algorithm to skip over the irrelevant changes in the log of changes. As such, information at the specific PIT can be read without the need to recover the entire file system into the exact PIT.
[0014] In an implementation of the first aspect, the method may comprise selecting a snapshot of the multiple snapshots generated at the respective PIT preceding the specific PIT or a snapshot of the multiple snapshots generated at the respective PIT succeeding the specific PIT, based on at least one of: which of the respective time intervals is shorter, a number of operations, a number of data operations, and a weight assigned to the multiple snapshots.
[0015] The plurality of index nodes comprised by the file system index may comprise the index nodes that have been changed in the time interval between the time at which the selected snapshot was generated and the specific PIT.
[0016] The method may further comprise, in response to detecting that none of the index nodes of the plurality of index nodes of the file system index comprise the data requested to be accessed, accessing the requested data using the selected snapshot. The index node may further comprise file system attributes, wherein the attributes comprise an indication of when the location in memory identified by the index node has been written to.
[0017] The method may further comprise the step of creating a plurality of linked lists, each of the plurality of linked lists created for each index node stored in the file system, respectively, wherein each of the plurality of linked lists comprises a record of change operations for a given index node between a first PIT and a second PIT.
[0018] The step of creating the plurality of linked lists may be performed while generating the multiple snapshots of the file system.
[0019] The plurality of linked lists may comprise reversed linked lists, wherein a first entry in each of the linked lists comprises a most recent change operation for the given index node.
[0020] The method may further comprise the step of creating a mapping structure that maps a unique identifier of the index node of the plurality of index node to the first entry in the respective linked list for a respective index node.
[0021] The method may further comprise the step of splitting the index node into multiple regions, and creating a different linked list for each of the multiple regions.
[0022] The method may further comprise the step of generating a plurality of file system indexes during the step of generating, by the backup file system, multiple snapshots of the primary file system.
[0023] A second aspect of the present disclosure provides a computer readable storage medium comprising computer program code, accessible by an apparatus comprising a processor, to provide instructions and / or data to the apparatus, the computer program code configured to, with the processor, cause the apparatus to generate, by a backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT, receive a request to access data from the specific PIT, select a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT, generate a file system index at the specific PIT, based on the selected snapshot, wherein the file system index comprises a plurality of data names and a plurality of corresponding index nodes used by the file system, each of the plurality of index nodes identifying a location of data in a memory used by backup the file system, detect whether the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index, and, in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, access the requested data using the file system index.
[0024] In an implementation of the second aspect, the computer readable storage medium may further the computer program code configured to, with the processor, cause the apparatus to select a snapshot of the multiple snapshots generated at the respective PIT preceding the specific PIT or a snapshot of the multiple snapshots generated at the respective PIT succeeding the specific PIT, based on at least one of : which of the respective time intervals is shorter, a number of operations, a number of data operations, and a weight assigned to the multiple snapshots.
[0025] The plurality of index nodes comprised by the file system index may comprise the index nodes that have been changed in the time interval between the time at which the selected snapshot was generated and the specific PIT.
[0026] In response to detecting that none of the index nodes of the plurality of index nodes of the file system index comprise the data requested to be accessed, the program code may be configured to, with the processor, cause the apparatus to access the requested data using the selected snapshot.
[0027] A third aspect of the present disclosure provides a computing system, comprising a processor, a memory coupled to the processor, configured to store program code executable by the processor, the program code comprising one or more instructions to cause the computing system to generate, by a backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT, receive a request to access data from the specific PIT, select a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT, generate a file system index at the specific PIT, based on the selected snapshot, wherein the file system index comprises a plurality of data names and a plurality of corresponding index nodes used by the file system, each of the plurality of index nodes identifying a location of data in a memory used by backup the file system, detect whether the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index, and, in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, access the requested data using the file system index.
[0028] These and other aspects of the invention will be apparent from the embodiment(s) described below.
[0029] BRIEF DESCRIPTION OF THE DRAWINGS
[0030] In order that the present invention may be more readily understood, embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings, in which:
[0031] Figure 1 is a schematic representation of the method of accessing data from a backup file system at a specific point-in-time, PIT, according to an example;
[0032] Figure 2 illustrates snapshot generation according to an example;
[0033] Figure 3 depicts a file system index according to an example;
[0034] Figure 4 schematically depicts a plurality of linked lists according to an example;
[0035] Figure 5 illustrates linked lists for files split into multiple regions according to an example; and Figure 6 is a schematic representation of a computing system according to an example.
[0036] DETAILED DESCRIPTION
[0037] Example embodiments are described below in sufficient detail to enable those of ordinary skill in the art to embody and implement the systems and processes herein described. It is important to understand that embodiments can be provided in many alternate forms and should not be construed as limited to the examples set forth herein.
[0038] Accordingly, while embodiments can be modified in various ways and take on various alternative forms, specific embodiments thereof are shown in the drawings and described in detail below as examples. There is no intent to limit to the particular forms disclosed. On the contrary, all modifications, equivalents, and alternatives falling within the scope of the appended claims should be included. Elements of the example embodiments are consistently denoted by the same reference numerals throughout the drawings and detailed description where appropriate.
[0039] The terminology used herein to describe embodiments is not intended to limit the scope. The articles “a,” “an,” and “the” are singular in that they have a single referent, however the use of the singular form in the present document should not preclude the presence of more than one referent. In other words, elements referred to in the singular can number one or more, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes,” and / or “including,” when used herein, specify the presence of stated features, items, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, items, steps, operations, elements, components, and / or groups thereof.
[0040] Unless otherwise defined, all terms (including technical and scientific terms) used herein are to be interpreted as is customary in the art. It will be further understood that terms in common usage should also be interpreted as is customary in the relevant art and not in an idealized or overly formal sense unless expressly so defined herein.
[0041] The current solutions for reading information from a file system at a specific point-in-time require the entire file system to be recovered into the exact PIT. The process of recovering a file system into a PIT can take a long time, since it depends on the size of the operation logs (i.e., the list of changes from the previous backup / snapshot). The main disadvantage of this approach is that it is very time consuming and requires a special storage to hold the entire recovered file system.
[0042] An index node (inode) is a data structure in a Unix-style file system that describes a file system object (for example, a file or a directory). Each index node stores the attributes and disk block locations of the object’s data. File system attributes may include metadata (for example, time of last change, access, modification), as well as owner and permission data.
[0043] According to an example, there is provided a mechanism to enable the user to quickly read data and metadata from a backup file system at any PIT without the need to wait for the recovery of the entire file system to the exact PIT. For example, a special data structure can be used to enable the algorithm to skip over irrelevant changes in the log of changes. This special data structure is first used to detect the unique identity (e.g., the index node) of the file to be accessed / recovered at the specific PIT (the full path of the file is unique only in the time space). Once the unique identity has been detected, the algorithm can skip directly to the information elated to the desired file, without the need to recover the entire file system.
[0044] Examples in the present disclosure can be provided as methods, systems or machine-readable instructions, such as any combination of software, hardware, firmware or the like. Such machine-readable instructions may be included on a computer readable storage medium (including but not limited to disc storage, CD-ROM, optical storage, etc.) having computer readable program codes therein or thereon.
[0045] The present disclosure is described with reference to flow charts and / or block diagrams of the method, devices and systems according to examples of the present disclosure. Although the flow diagrams described above show a specific order of execution, the order of execution may differ from that which is depicted. Blocks described in relation to one flow chart may be combined with those of another flow chart. In some examples, some blocks of the flow diagrams may not be necessary and / or additional blocks may be added. It shall be understood that each flow and / or block in the flow charts and / or block diagrams, as well as combinations of the flows and / or diagrams in the flow charts and / or block diagrams can be realized by machine readable instructions.
[0046] The machine-readable instructions may, for example, be executed by a machine such as a general-purpose computer, user equipment such as a smart device, e.g., a smart phone, a special purpose computer, an embedded processor or processors of other programmable data processing devices to realize the functions described in the description and diagrams. In particular, a processor or processing apparatus may execute the machine-readable instructions. Thus, modules of apparatus (for example, a module implementing a comparator unit, or a firewall structure and so on) may be implemented by a processor executing machine readable instructions stored in a memory, or a processor operating in accordance with instructions embedded in logic circuitry. The term 'processor' is to be interpreted broadly to include a CPU, processing unit, ASIC, logic unit, or programmable gate set etc. The methods and modules may all be performed by a single processor or divided amongst several processors. Such machine-readable instructions may also be stored in a computer readable storage that can guide the computer or other programmable data processing devices to operate in a specific mode. For example, the instructions may be provided on a non-transitory computer readable storage medium encoded with instructions, executable by a processor.
[0047] Figure 1 is a schematic representation of the method of accessing data from a backup file system at a specific point-in-time, PIT, according to an example. The data to be accessed may comprise data from a file and / or metadata of the file (e.g., file attributes). The backup file system may also be described as a protected file system.
[0048] The method comprises, in block 101, generating, by the backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT. Here, the term “primary file system” refers to the file system not used for backup. The filesystem snapshot represents a full state of the file system at the snapshot time. The generated snapshots are internal in the sense that they are created by the backup file system on the backup file system, i.e., not on the primary file system.
[0049] This is also illustrated in Figure 2, which illustrates the snapshot generation according to an example. In the example of Figure 2, a first file system backup 210 may be created at some point in time, denoted in Figure 1 as Time 0. At some later point(s) in time, changes 211 may be made to the file system - for example, files / directories may be moved, renamed, created or deleted - such that the first file system backup 210 may no longer reflect the current state of the file system. If a user were to retrieve data from the first file system backup 210, that data would not reflect any changes 211 made after Time 0. A file system change 211 represents a single file-system operation. Applying this operation on the file system moves the file system from the previous stable state into the new stable state. These operations may include, for example, writing data into a file, creating a new directory, updating file attributes, deleting a file / directory, and similar.
[0050] In the example of Figure 2, the multiple snapshots 201 comprise a first snapshot 201-1 and a second snapshot 201-2. The multiple snapshots 201 of Figure 2 are depicted as being generated after a certain number of changes 211 has been performed on a file system, but the invention is not limited thereto. For example, the first snapshot 201-1 of the multiple snapshots 201 may be generated after a hundred changes 211 have been made to the file system, and the second snapshot 201-2 of the multiple snapshots 201 may be generated after two hundred changes 211 have been made to the file system. The snapshot generation may be conducted as a background process, without the user requesting for the multiple snapshots 201 to be generated.
[0051] In block 102, the method comprises receiving a request to access data from the specific PIT. Here, the specific PIT refers to the PIT the user wishes to access information at.
[0052] In block 103, the method comprises selecting a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT. Referring to Figure 2, assuming that the specific PIT is equal to 180, the method may comprise selecting the first snapshot 201-1 of the multiple snapshots 201 (that is, the snapshot generated at a time preceding the specific PIT) or the second snapshot 201-2 of the multiple snapshots 201 (i.e., the snapshot generated at a time succeeding the specific PIT).
[0053] The snapshot of the multiple snapshots 201 may be selected based on at least one of which of the respective time intervals is shorter (e.g., whether the specific PIT is closer to the first snapshot 201-1 or the second snapshot 201-2), a number of operations performed, a number of data operations performed, and a weight assigned to each of the multiple snapshots 201. In the example of Figure 2, the shortest path is from the second snapshot 201-2 to the specific PIT. If the succeeding snapshot (i.e., second snapshot 201-2) has not been generated yet, the method may comprise waiting until the succeeding snapshot has been generated or using the forward direction method described below.
[0054] In order to compare which of the respective time intervals is shorter, the method may comprise calculating a length of a path from the preceding snapshot (i.e., first snapshot 201-1) to the specific PIT, and calculating a length of a path from the succeeding snapshot to the specific PIT. The two lengths may be compared and the shortest path may be selected. However, as mentioned above, a weight may be assigned to at least one of the multiple snapshots 201. In a specific implementation of the invention, a weight factor (>1) may be added to the reverse path (i.e., the path from the succeeding snapshot to the specific PIT), because the reverse process may have some overhead relating to finding the exact data block location. The weight may be a single value for the entire path or per operations group type (e.g., xl for meta-data changes and xl.2 for data changes). In other words, a weight may be assigned to each operation. Then, the algorithm may calculate the shortest path based on the weights (sum of the weights from the snapshot to the specific PIT) selected the closer snapshot (i.e., the snapshot having a shorter path to the specific PIT).
[0055] In block 104, the method comprises generating a file system index at the specific PIT, based on the selected snapshot. Figure 3 depicts a file system index according to an example. In the example, the specific PIT is equal to 180. A plurality of file system indexes may be created, for example, during the step of generating the multiple snapshots of the primary file system.
[0056] The file system index 300 may provide a map from a full path into an index node at the specific PIT for all the files that have been changed in the time interval from the selected snapshot to the specific PIT (or from the specific PIT to the selected snapshot). The file system index 300 comprises a plurality of data names and a plurality of corresponding index nodes 301 used by the file system, wherein each of the plurality of index nodes 301 identifies a location 302 of corresponding data in a memory used by the backup file system. Here, the term “data name” represents the full path of the file / directory in the file system.
[0057] The file system index 300 may further comprise file system attributes 303, related to the index node 301. The file system attributes 303 may comprise an indication of when the location 302 identified by the index node 301 has been written to, permission data, and others. The file system index 300 may further comprise an indication 304 of a state of the file related to the index node 301 - for example, whether it exists or not.
[0058] In block 105, the method comprises detecting whether the requested index node 301 (the specific index node comprising the data to be accessed) is comprised in the file system index 300. The detecting is performed by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index 300.
[0059] In case the selected snapshot corresponds to a snapshot generated at a PIT succeeding the specific PIT, files that are not found within the file system index 300 may be accessed directly from the succeeding snapshot. Alternatively, if the selected snapshot corresponds to a snapshot generated at a PIT preceding the specific PIT, files that are not found in the file system index 300 may be accessed directly from the preceding snapshot. Once the file system index 300 has been created, file attributes can be easily returned, either from the index, or from the preceding / succeeding snapshot.
[0060] In block 106, the method comprises, in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, accessing the requested data using the file system index. For example, in order to access the requested data, the method may comprise going over a log of changes from the specific PIT to the selected snapshot, but only for the specific index node of the file - that is, skipping all the other irrelevant index nodes. Once a write operation to the requested block has been detected, the data may be returned.
[0061] In other words, if the shortest the shortest path is the backward path from the succeeding screenshot, the file system index 300 may be generated at the specific PIT, and the index node 301 may be searched for in the file system index 300. If the index node 301 is present, but its indication 304 marks it as deleted, the user may be notified that the requested file does not exist at the specific PIT. Similarly, if the requested index node 301 is not comprised within the file system index 300, the index node 301 and its attributes 303 may be read directly from the succeeding screenshot. At this point, both the index node 301 and its attributes 303 may be available. If the user asked only for the attributes 303 associated with the index node 301, the method can stop at this point.
[0062] During a pre-processing phase of the algorithm, multiple reversed linked lists may be created (one for each index node). These linked lists may comprise information relating to operations performed on a given file. Here, ‘reversed’ refers to the fact that the first entry in the linked list is the last change operation and the last entry in the linked list is the first change operation. Figure 4 schematically depicts a plurality of linked lists according to an example. Same elements in Figures 1-4 are denoted with the same reference numerals and function likewise.
[0063] Figure 4 shows that various operations may performed on a first index node 301-1 and a second index node 301-2 of the plurality of index nodes 301 in a given time frame - in the example of Figure 4, the time frame starting from the PIT at which the first snapshot 201-1 was generated to the PIT at which the second snapshot 201-2 was generated. As shown in the example of Figure 4, these operations may comprise, for example, a write operation, or a metadata operation, but the invention is not limited thereto. As a result of background processing, during the pre-processing phase of the algorithm, a first linked list 401-1 and a second linked list 401- 2 may be generated. The first linked list 401-1 may be generated for the first index node 301-1 and the second linked list 401-2 may be generated for the second index node 301-2, respectively. Advantageously, in this way, the linked lists 401-1 and 401-2 may be used to go over the write operations for a specific file (uniquely identified by the index node) without the need to go over all of the file system write operations.
[0064] In order to find the data block associated with the requested data at the specific PIT, the method may comprise accessing a first entry of the requested index node 301 in the linked list, skipping over all the entries after the specific PIT. The method may then comprise going over the remaining entries in the linked list and, for each entry, performing an action based on the type of entry. For example, if the entry relates to a write operation and the offset equals to the requested offset, the method may comprise returning the data from the write operation.
[0065] However, as a single user request to access the data block at the specific PIT may be covered by multiple write operations, a comparison of ranges of offsets may be performed, with each of the multiple write operations being associated with its own sub-set of offsets. For example, the user request may comprise a request to read a data block at offset 1000, length 500 bytes. In such case, the range of offsets may comprise offsets 1000-1499 (i.e., [1000, 1499]). In order to generate the response to the user, the algorithm may scan the list of actual write operations. However, it is possible that the algorithm may find a write operation for a block that does not fully cover the range that is being sought; for example, the algorithm may find a write operation to the block related to the offset [800, 1199], In such case, the algorithm may copy the range [1000, 1199] from the write operation and continue to scan until the whole range of offsets (in this example, [1000, 1499]) has been covered. If the algorithm reaches the end of the list and some sub-range is still missing (e.g., range [1400, 1499]), the algorithm may copy this range from the selected snapshot.
[0066] If the entry relates to a delete file operation, an indication that the data is invalid may be returned. If the entry relates to a file truncate operation and the new size is less than the requested offset, an indication that the data is invalid may be returned; similarly, if the new size is greater than the requested offset but is less than the sum of the offset and the length, the subblock (size, offset+length) may be marked as invalid. If no entries have been found, the data may be returned directly from the preceding (first) snapshot of the multiple snapshots 201, since there was no write operation to the requested block between the time at which the first snapshot 201-1 of the multiple snapshots 201 was generated and the specific PIT.
[0067] In addition to the reversed linked lists, a small data structure that maps the index node number into the first entry in each of the linked lists may be created, in order to later be used as a starting point for each of the index nodes. The plurality of linked lists 401-1, 401-2 may be created while generating the multiple snapshots 201-1, 201-2 of the file system. As such, in terms of time complexity, the overhead of the algorithm can be reduced.
[0068] The method may further comprise the step of splitting the index node into multiple regions and to create a different linked list for each of the multiple regions. This is illustrated in Figure 5, which illustrates linked lists for files split into multiple regions according to an example. In Figures 4 and 5, same reference numerals refer to the same elements, having the same function. In the example shown in Figure 5, the second index node 301-2 of the plurality of index nodes 301 represents a large file.
[0069] The second index node 301-2 may be split into three different regions - for example, [0, 1GB] (i.e., from 0 to 1GB), [1GB, 2GB] and [2GB, EOF] (EOF referring to the end of the file). In the example of Figure 5, the metadata operation at tio3 is linked into all the different regions because it is related to the entire file. A different linked list may be created for each of the multiple regions - in case of the second index node 301-2 having three different regions, three linked lists 401-2 to 401-4 may be created. In contrast, in the example of Figure 5, the first index node 301-1 of the plurality of index nodes 301 comprises a single linked list 401-1 only, as the file represented by the first index node 301-1 in the example represents a regular (i.e., not large) file).
[0070] Figure 6 is a schematic representation of a computing system according to an example. The computing system 600 may comprise a processor 601 and a memory 602 coupled to the processor 601, configured to store program code 603 executable by the processor 601, the program code comprising one or more instructions to cause the computing system to perform the steps described above.
[0071] Changes to the file system may be further separated into two main groups - metadata changes and data changes. Metadata changes may comprise changes of the file system state. These operations may include changing the index node data structure. The metadata changes may be used to generate the file system index 300.
[0072] To aid understanding of the invention, the table below presents the list of metadata operations and how each operation is utilised to generate the file system index 300 at the specific PIT (depending on the direction in which the index is created - forward or backward).
[0073] In contrast, data changes may comprise changes of the file object data on the disk. These operations may change the data of a file on the disk. Examples of these operations may comprise writing data into a file and truncating the file size.
[0074] According to an example, machine-readable instructions can be loaded onto a computer or other programmable data processing devices, so that the computer or other programmable data processing devices perform a series of operations to produce computer-implemented processing, thus the instructions executed on the computer or other programmable devices provide an operation for realizing functions specified by flow(s) in the flow charts and / or block(s) in the block diagrams.
[0075] Further, the teachings herein may be implemented in the form of a computer or software product, such as a non-transitory machine-readable storage medium, the computer software or product being stored in a storage medium and comprising a plurality of instructions, e.g., machine readable instructions, for making a computer device implement the methods recited in the examples of the present disclosure.
[0076] In some examples, some methods can be performed in a cloud-computing or network-based environment. Cloud-computing environments may provide various services and applications via the Internet. These cloud-based services (e.g., software as a service, platform as a service, infrastructure as a service, etc.) may be accessible through a web browser or other remote interface of the user equipment for example. Various functions described herein may be provided through a remote desktop environment or any other cloud-based computing environment.
[0077] While various embodiments have been described and / or illustrated herein in the context of fully functional computing systems, one or more of these exemplary embodiments may be distributed as a program product in a variety of forms, regardless of the particular type of computer- readable-storage media used to actually carry out the distribution. The embodiments disclosed herein may also be implemented using software modules that perform certain tasks. These software modules may include script, batch, or other executable files that may be stored on a computer-readable storage medium or in a computing system. In some embodiments, these software modules may configure a computing system to perform one or more of the exemplary embodiments disclosed herein. In addition, one or more of the modules described herein may transform data, physical devices, and / or representations of physical devices from one form to another.
[0078] The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the instant disclosure. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the instant disclosure.
Claims
CLAIMS1. A method (100) of accessing data from a backup file system at a specific point-intime, PIT, the method comprising: generating, by the backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT (ioi); receiving a request to access data from the specific PIT (102); selecting a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT (103); generating a file system index at the specific PIT, based on the selected snapshot, wherein the file system index comprises a plurality of data names and a plurality of corresponding index nodes used by the file system, each of the plurality of index nodes identifying a location of data in a memory used by the backup file system (104); detecting whether the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index (105); and in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, accessing the requested data using the file system index (106).
2. The method (100) of claim 1, comprising selecting a snapshot of the multiple snapshots generated at the respective PIT preceding the specific PIT or a snapshot of the multiple snapshots generated at the respective PIT succeeding the specific PIT, based on at least one of which of the respective time intervals is shorter, a number of operations, a number of data operations, and a weight assigned to the multiple snapshots.
3. The method (100) of claim 1 or 2, wherein the plurality of index nodes comprised by the file system index comprises the index nodes that have been changed in thetime interval between the time at which the selected snapshot was generated and the specific PIT.
4. The method (100) of claim 3, wherein, in response to detecting that none of the index nodes of the plurality of index nodes of the file system index comprise the data requested to be accessed, the method further comprises accessing the requested data using the selected snapshot.
5. The method (100) of any preceding claim, wherein the index node further comprises file system attributes, wherein the attributes comprise an indication of when the location in memory identified by the index node has been written to.
6. The method (100) of any preceding claim, further comprising the step of creating a plurality of linked lists, each of the plurality of linked lists created for each index node stored in the file system, respectively, wherein each of the plurality of linked lists comprises a record of change operations for a given index node between a first PIT and a second PIT.
7. The method (100) of claim 6, wherein the step of creating the plurality of linked lists is performed while generating the multiple snapshots of the file system.
8. The method (100) of claim 6 or 7, wherein the plurality of linked lists comprise reversed linked lists, wherein a first entry in each of the linked lists comprises a most recent change operation for the given index node.
9. The method (100) of claim 8, further comprising the step of creating a mapping structure that maps a unique identifier of the index node of the plurality of index node to the first entry in the respective linked list for a respective index node.
10. The method (100) of any one of claims 6 to 9, further comprising the step of splitting the index node into multiple regions, and creating a different linked list for each of the multiple regions.
11. The method (100) of any preceding claim, further comprising the step of generating a plurality of file system indexes during the step of generating, by the backup file system, multiple snapshots of the primary file system.
12. A computer readable storage medium comprising computer program code, accessible by an apparatus comprising a processor, to provide instructions and / or data to the apparatus, the computer program code configured to, with the processor, cause the apparatus to: generate, by a backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT; receive a request to access data from the specific PIT; select a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT; generate a file system index at the specific PIT, based on the selected snapshot, wherein the file system index comprises a plurality of data names and a plurality of corresponding index nodes used by the file system, each of the plurality of index nodes identifying a location of data in a memory used by backup the file system; detect whether the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index; and in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, access the requested data using the file system index.
13. The computer readable storage medium of claim 12, further comprising the computer program code configured to, with the processor, cause the apparatus to select a snapshot of the multiple snapshots generated at the respective PIT preceding the specific PIT or a snapshot of the multiple snapshots generated at the respective PIT succeeding the specific PIT, based on at least one of : which of the respective time intervals is shorter, a number of operations, a number of data operations, and a weight assigned to the multiple snapshots.
14. The computer readable storage medium of claim 12 or 13, wherein the plurality of index nodes comprised by the file system index comprises the index nodes that have been changed in the time interval between the time at which the selected snapshot was generated and the specific PIT.
15. The computer readable storage medium of claim 14, wherein, in response to detecting that none of the index nodes of the plurality of index nodes of the file system index comprise the data requested to be accessed, the program code is configured to, with the processor, cause the apparatus to access the requested data using the selected snapshot.
16. A computing system (600), comprising: a processor (601); a memory (602) coupled to the processor (601), configured to store: program code (603) executable by the processor (601), the program code (603) comprising one or more instructions to cause the computing system (600) to: generate, by a backup file system, multiple snapshots of a primary file system, wherein each of the multiple snapshots is generated at a respective PIT; receive a request to access data from the specific PIT; select a snapshot of the multiple snapshots based on a respective time interval between the respective PIT at which each of the multiple snapshots was generated and the specific PIT; generate a file system index at the specific PIT, based on the selected snapshot, wherein the file system index comprises a plurality of data names and a plurality of corresponding index nodes used by the file system, each of the plurality of index nodes identifying a location of data in a memory used by backup the file system; detect whether the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index by checking whether a data name of the data requested to be accessed matches one of the plurality of data names in the file system index; and in response to detecting that the index node of the plurality of index nodes that comprises the data requested to be accessed is comprised in the file system index, access the requested data using the file system index.
Citation Information
Patent Citations
System and method for managing a plurality of snapshots
US20030182301A1
Reducing stable data eviction with synthetic baseline snapshot and eviction state refresh
US20180121454A1
Smart file level restore with rp4vm
US20210064487A1