Mapping identifiers to maintain name and location consistency in file system objects

By using multiple mapped records in the process of file system copying and synchronization to maintain the consistency of file system objects, the problem of waste of target file system resources is solved, and more efficient resource management and consistency of file system objects is achieved.

CN119895374APending Publication Date: 2025-04-25HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280100162.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-10-09
Publication Date
2025-04-25

AI Technical Summary

Technical Problem

During file system replication and synchronization, data on the target file system needs to be frequently deleted and rebuilt to make room for new copies in the source file system, which leads to waste of processing and memory resources.

Method used

Consistency of file system objects is maintained by using memory with multiple mapped records, each mapped record containing an identifier for associating file system objects stored in different storage devices. The processor is used to identify and update inconsistencies in the mapped records to synchronize the name and location of file system objects.

Benefits of technology

It realizes more efficient management of resources during file system replication and synchronization, reduces waste of processing and memory resources, and improves the consistency of file system objects.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119895374A_ABST
    Figure CN119895374A_ABST
Patent Text Reader

Abstract

A system and related method maintain coherency of file system (FS) objects by including a memory having a plurality of mapping records, where each mapping record has a first identifier (ID) and a second ID for associating a first FS object stored in a first storage device. The second FS object may be stored in a second storage device. The first FS object and the second FS object may be controlled by different instances of an FS kernel. The system may also include a processor to access the memory to identify an inconsistency between the first FS object and the second FS object, update a respective mapping record of the plurality of mapping records to associate the second ID with a modification name or a modification location corresponding to the identified inconsistency.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] In some embodiments of the present invention, the present invention relates to a computing system, and more particularly, but not exclusively, to a file system replication and synchronization process.

[0002] A data storage system is a combination of hardware and software that typically includes multiple storage processors coupled to an array of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and optical disk drives. Storage processors service requests from the host and specify file elements to be written, read, created, or deleted. In addition to managing incoming storage requests, the processors perform a variety of data processing tasks to organize and protect the data stored on the non-volatile storage devices.

[0003] Data storage systems often employ replication and synchronization techniques to back up or expand the data they store. Such systems can create a copy of an organization's production site data on a secondary storage system. The secondary storage system can be located in the same physical location as the original production data or in a physically remote location.

[0004] The storage system can provide data updates for data synchronization and recovery at a specified point in time. Synchronization is designed to minimize downtime and data inconsistency by periodically retaining changes made to the source data since the most recent copy, for example, resynchronization operations. During synchronization, the storage system can access files on the source system and copy object data and file-level metadata to another target file system.

[0005] During the resynchronization process, data on the target file system must be deleted to make room for the new copy in the source file system. That is, the updated copy is saved in the place of the deleted copy on the target file system. As a result, many objects and associated data in the target file system are deleted and then re-copied from the source file system again. In other words, some objects on the target file system must be rebuilt immediately after being deleted because they remain unchanged compared to the source file system copy. For example, most of the data on the target file system may be the same as the data on the source file system where only the name or location of the object has changed on the source side. Therefore, replacing data on the target file system that has not changed or been deleted on the source side can be considered as consuming processing and memory resources just to re-do existing work. Summary of the invention

[0006] According to an aspect of some embodiments of the present invention, a system is provided for maintaining consistency of a file system (FS) object by including a memory having a plurality of mapping records, each mapping record having a first identifier (ID) and a second ID for associating a first FS object stored in a first storage device. The second FS object may be stored in a second storage device. The first FS object and the second FS object may be controlled by different instances of a FS kernel. The system may also include a processor for accessing the memory to identify an inconsistency between the first FS object and the second FS object, and updating a corresponding mapping record in the plurality of mapping records to associate the second ID with a modified name or a modified position corresponding to the identified inconsistency.

[0007] According to some embodiments of the present invention, the processor identifies the inconsistency by identifying a difference between corresponding positions of the first FS object and the second FS object. According to some embodiments of the present invention, the processor identifies the inconsistency by identifying a difference between corresponding names of the first FS object and the second FS object. According to some embodiments of the present invention, the processor is further configured to synchronize the second FS object to a third FS object of a third storage device by associating a third ID with the modified name or the modified position associated with the second ID.

[0008] According to some embodiments of the present invention, the processor is further configured to identify a second inconsistency between the modified name or position and a corresponding position or name of the third FS object. According to some embodiments of the present invention, the processor is further configured to synchronize the first FS object to the third FS object by associating the first ID with a second modified name or a second modified position associated with the third ID. According to some embodiments of the present invention, the processor is further configured to synchronize the plurality of mapping records by performing the update in response to a synchronization operation.

[0009] According to some embodiments of the present invention, the identifying inconsistency comprises comparing a first position of the first FS object within a first path and a second position of the second FS object within a second path. According to some embodiments of the present invention, the identifying inconsistency comprises comparing one or more paths associated with the first ID and a plurality of corresponding paths associated with the second ID, wherein the plurality of corresponding paths are associated with a plurality of hard links to the modified position of the second FS object. According to some embodiments of the present invention, the identifying inconsistency comprises comparing an attribute associated with the first ID and a corresponding attribute associated with the second ID.

[0010] According to some embodiments of the present invention, the identifying inconsistency comprises comparing a first checksum value associated with a first path of the first ID and a second checksum value associated with a second path of the second ID. According to some embodiments of the present invention, the identifying inconsistency comprises comparing the plurality of mapping records and a plurality of mapping records generated subsequently. According to some embodiments of the present invention, the processor is further configured to reassign the first ID to a third FS object, wherein the first FS object has been deleted.

[0011] According to some embodiments of the present invention, the first memory and the second memory are changed before the resynchronization operation, and the processor is further used to prompt the user to select the first FS object instead of the second FS object for replication. According to some embodiments of the present invention, the first memory and the second memory are changed before the resynchronization operation, and the processor is further used to prompt the user to select the most recently updated FS object between the first FS object and the second FS for replication.

[0012] According to some embodiments of the present invention, the first memory and the second memory are changed before the resynchronization operation, and the processor is further used to prompt a user to select a correct version between the first FS object and the second FS object for replication. According to some embodiments of the present invention, the processor is further used to prompt a user to designate the first FS object as a primary copy for replication to multiple FS objects. According to some embodiments of the present invention, the processor is further used to store the multiple mapping records in at least one of the following: an ordered log file, a key-value store, a database, the first FS object, the second FS object, or as a special extended attribute on the second identifier.

[0013] According to some embodiments of the present invention, the processor is further used to store the multiple mapping records in a mapping table. According to one aspect of some embodiments of the present invention, a method for modifying the name or position of an FS object to synchronize with the name or position of another FS object is provided, the method comprising mapping an ID associated with a first FS object of a first storage device to a second ID associated with a second FS object of a second storage device. The method also includes controlling the first FS object and the second FS object using different instances of the FS kernel, identifying inconsistencies between the first FS object and the second FS object, and updating corresponding mapping records in a plurality of mapping records to associate the second ID with a modified name or modified position corresponding to the identified inconsistency.

[0014] According to some embodiments of the present invention, the identifying inconsistency further comprises scanning the first memory and the second memory before a synchronization operation. According to some embodiments of the present invention, the method further comprises updating a corresponding name or a corresponding position of each FS object in a plurality of FS objects including a copy of the first object. According to some embodiments of the present invention, the first FS object and the second FS object are included in a plurality of N FS objects, and the method further comprises associating the modified name or the modified position with the N-1th name or the N-1th position associated with the N-1th ID of the plurality of N FS objects, and associating the modified name or the modified position of the N-1th ID with the Nth name or the Nth position associated with the Nth ID of the plurality of N FS objects.

[0015] According to some embodiments of the present invention, the modified name or the modified position of the Nth ID is associated with a first name or a first position associated with the first ID. According to some embodiments of the present invention, mapping the first ID also includes mapping at least one of an index node or a file ID.

[0016] According to one aspect of some embodiments of the present invention, at least one non-transitory computer-readable medium comprising instructions is provided, which, in response to one or more processors executing the instructions, causes the one or more processors to perform the following operations: mapping a first ID associated with a first FS object of a first storage device to a second ID associated with a second FS object of a second storage device, controlling the first FS object and the second FS object using different instances of the FS kernel, identifying inconsistencies between the first FS object and the second FS object, and updating corresponding mapping records in multiple mapping records to associate the second ID with a modified name or a modified location corresponding to the identified inconsistency.

[0017] Unless otherwise defined, all technical and / or scientific terms used herein have the same meaning as those known to those of ordinary skill in the art to which the invention belongs. Although methods and materials similar or equivalent to the methods and materials described herein can be used for the implementation or testing of embodiments of the invention, some exemplary methods and / or materials are described below. In the event of a conflict, this patent specification (including definitions) shall prevail. In addition, these materials, methods and examples are illustrative only and are not necessarily restrictive.

[0018] The implementation of the method and / or system provided by the embodiments of the present invention may involve performing or completing the selected task manually, automatically or in combination with the two methods. In addition, the actual instruments and equipment according to the embodiments of the method and / or system of the present invention may complete the tasks of multiple selections by using hardware, software, firmware or a combination of the three through an operating system.

[0019] For example, the hardware for performing selected tasks according to an embodiment of the present invention can be implemented as a chip or circuit. For software, the selected tasks according to an embodiment of the present invention can be performed by a computer through any suitable operating system to execute multiple software instructions. In an exemplary embodiment of the present invention, one or more tasks in the exemplary embodiments of the method and / or system described herein are performed by a data processor, such as a computing platform for executing multiple instructions. Optionally, the data processor includes a volatile memory and / or non-volatile memory for storing instructions and / or data, such as a hard disk and / or removable media for storing instructions and / or data. Optionally, a network connection is also provided. Optionally, a display and / or user input device such as a keyboard or mouse is also provided. BRIEF DESCRIPTION OF THE DRAWINGS

[0020] Some embodiments of the present invention are described herein by way of example only, in conjunction with the accompanying drawings. The following detailed descriptions with specific reference to the accompanying drawings emphasize that the details shown are only examples and are for illustrative purposes only to discuss embodiments of the present invention. In this regard, it will be apparent to those skilled in the art how to practice the embodiments of the present invention based on the accompanying drawings.

[0021] In the attached picture:

[0022] Figure 1 A simplified block diagram of a computing system is shown;

[0023] Figure 2 A block diagram illustrating an implementation of a system including a software application and associated hardware that enables a user to manage and maintain consistency between the names and locations of objects;

[0024] Figure 3 A block diagram showing the logical relationship between a file path, a file index node, and file data;

[0025] Figure 4 A block diagram illustrating an example of a file system including a tree including multiple directories and files in addition to associated index nodes;

[0026] Figure 5 A schematic diagram showing illustrative directory data, more specifically, includes Figure 4 A schematic diagram of illustrative directory data in a directory of a file system tree;

[0027] Figure 6 Shows something like Figure 3 FS object 600 of the FS object, in which the operation of changing the position is symbolically performed;

[0028] Figure 7A file system 700 is shown, which includes Figure 4 the file system, but the objects are renamed and assigned new locations / paths;

[0029] Figure 8 A block diagram illustrating an example of a file system including a tree including multiple directories and files in addition to associated index nodes;

[0030] Fig. 9 Shown include for promoting Figure 8 The file system's replicated ID mapping table;

[0031] Fig.10 A block diagram showing a system for performing multi-way or n-way synchronization of multiple file system trees, wherein arrows show the order in which changes to the name or location of an object in one file system tree are correspondingly updated in another file system tree during a replication operation;

[0032] Fig.11 An embodiment of a method of maintaining consistency of file system objects is shown; and

[0033] Fig.12 An exemplary architecture of a computing device and, more particularly, a block diagram of a system that may optionally be used to perform one or more aspects of the techniques described herein is shown. DETAILED DESCRIPTION

[0034] In some embodiments of the present invention, the present invention relates to a computing system, and more particularly, but not limited to, to a file system replication and synchronization process.

[0035] Embodiments of the system maintain consistency of file system objects using mapping records that associate objects in corresponding file system trees using unique object identifiers (IDs) to update modified names or locations. For example, a mapping of object IDs can be used to copy or update the name or hard link path of a first object in a first file system tree based on a corresponding object in a second file system.

[0036] During a synchronization operation of a single file system copy, an embodiment of the system scans the source file system tree. The system can then copy each object (e.g., file or folder) to a corresponding target location in the target file system tree. An embodiment of the system saves a mapping between a source object unique ID and each corresponding target object ID. Examples of object IDs include inode numbers and file IDs. If an object is copied from a source file system to a target file system, the system can also copy attributes. Examples of attributes include last modified dates. In this way, the attributes are the same from the source file system to the target file system, i.e., the attributes in the source file system and the target file system are the same.

[0037] If the source file system and the target file system need to be resynchronized, an embodiment of the system can scan the current source file system tree and the target file system tree at the same time. For each file system tree, the system can save a mapping record between each object ID and the corresponding object ID, such as a mapping record in an ID map. The mapping record can also include a path associated with the object in each tree, such as a path in a path map. In an example where multiple hard links are associated with an object, the mapping of the object ID will include multiple corresponding paths. By comparing the path mapping of the source file system with the path mapping of the target file system, and by associating the source object and the target object using the ID map, the system can identify any changes made on either file system tree since the last synchronization. The system can then determine how to merge or otherwise synchronize these trees. According to a specific embodiment, the system can select or prompt the user to select a synchronization direction (e.g., from source to target or vice versa).

[0038] In one implementation, the system may check to determine whether the source object ID and the corresponding target object ID exist in both file system trees. If so, the system may determine whether the paths and attributes of the target object and the source object are the same. If it is determined that the paths and attributes of the target object and the source object are the same, the system may not perform an operation to synchronize the objects. If the paths or attributes of the target object and the source object are different, the system may initiate a synchronization operation.

[0039] Examples of sync operations can include copying the source version, the latest version, or some combination that includes merging two versions. Other settings might include deleting files that have been deleted since the last sync operation, or always syncing to the source location.

[0040] The system can detect that an object is moved in one location or moved in two locations by determining that the associated paths are different. If the object includes multiple paths, the paths that are different between the file system trees can be deleted and hard links can be created for the new paths.

[0041] The system can determine that an object was created since the last sync operation by detecting that the object exists in only one location. Alternatively, the object might have been deleted since the last sync operation.

[0042] According to certain embodiments, the system may identify changed objects by calculating a checksum value for each object and including it in the path map (in addition to or instead of comparing object attributes). The checksum value may be included by the system as a parameter for object comparison.

[0043] Embodiments of the system may allow changes to the target file system and the source file system prior to resynchronization.

[0044] If both the target and source file systems have changed, resynchronization is useful, and the user may be prompted to select the result of the resynchronization. For example, the user may be prompted to select the source file system to be replicated so that the target file system is identical to the source file system.

[0045] In another example, the user may be prompted to have the system select the latest (e.g., most recently modified) copy between the corresponding objects of the target file system and the source file system. That is, if the latest update to one of the corresponding objects is on the target file system, the copy of the object on the target file system will be used to update the corresponding object on the source file system. Conversely, if the latest modification is on the object on the source file system, the copy of the object on the source file system will be used to update the corresponding object on the target file system.

[0046] In yet another example, the system may prompt the user to select the correct version of the object. For example, before resynchronization, multiple corresponding objects are modified, and the user may select the changes made to one of the objects as the version to be copied to another one or more objects.

[0047] Specific embodiments of the system can create multiple copies of a replica (e.g., a master copy) of a specified source file system. For example, multiple copies of the master copy may be needed at multiple different remote locations. The system can keep mapping records (e.g., ID mapping and / or path mapping) for each replica from the time the master copy is copied to each target. If conditions indicate that it is time to resynchronize the replica, the system can execute the single copy algorithm described herein for each replica. The synchronization of different replicas can be performed at different times. Each synchronization can be completed based on the current state of the target specific object and the source object (e.g., the master copy).

[0048] According to one or more scenarios, object IDs may be reused. For example, after synchronizing a source file system with a target file system, an object on the source file system (i.e., object A) may be deleted. Such deletion may functionally free the object ID previously associated with object A. If a new object (i.e., object B) is created, the system may reassign the object ID of object A to object B.

[0049] If the two file systems need to be resynchronized, the system may encounter Object B in its scan. The system may check and see that its object ID exists in the ID map, and can locate its corresponding target object (e.g., Object A on the target file system). The system may move Object A on the target file system to the path of Object B. The system may also recognize that this object has been changed because its attributes are different. For example, the creation and modification times will be later than the creation and modification times of the deleted Object A. Because the attributes are different, the system can synchronize the file data by copying the file contents of Object B to the corresponding Object B on the target file system. At the end of the synchronization process, the target file system includes Object A with the updated path and contents.

[0050] Some embodiments of the system implement multi-way or n-way synchronization. For example, the system may synchronize multiple file system replicas that have been changed independently, and all changes will be merged into all replicas.

[0051] For example, for object replicas 1-N, synchronization can start with object replica number 1 and synchronize it with object replica number 2 using mapping records as described herein. After synchronization, object replicas 1 and 2 are identical and both include changes made to both objects. The system can then synchronize object replica 2 with object replica 3, continuing in the same manner until object replica N-1 is synchronized with object replica N. Thus, the resulting object replica N can include merged changes from all other object replicas. The system can then synchronize object replica N with object replica 1.

[0052] In such a configuration, the system can loop the synchronization process by synchronizing object replicas 1 and 2, and so on, including synchronizing object replica N-2 with object replica N- 1. In this way, all object replicas can be identical and include changes made on all other object replicas.

[0053] In another example of synchronization using the master-copy method, the system can synchronize the first (e.g., master) copy with the second copy based on a defined policy. The system can also synchronize the first copy with the third copy according to the defined policy. If a file is copied from the third copy to the first copy, this process can be repeated by synchronizing the first copy with the second copy according to the defined policy. If necessary, only files copied from the third copy to the first (e.g., master) copy can be synchronized.

[0054] Where chained copies are implemented, the second copy may store, access or otherwise include an object ID corresponding to the first object ID. The third copy may include an object ID corresponding to the second object ID.

[0055] The policy may be user defined. For example, the system may prompt the user to define a policy that selects one replica as the master and makes all other replicas the same as the master. Another policy may cause the system to select the latest version from each replica. The system may use the latest version of the replica as the master and use it to update all other versions. In response to a conflict, the system of another embodiment may initiate a prompting the user to select between the replicas which replica will be the master to update all other replicas.

[0056] The methods and apparatus of the exemplary embodiments may be at least partially in the form of program code (i.e., instructions) embodied in a tangible medium, including a disk, CD-ROM, hard drive, random access or read-only memory, or any other machine-readable storage medium, including transmission media. If the program code is loaded into and executed by a machine (e.g., a computer), the machine becomes an apparatus for implementing the embodiments described herein. The medium may include portions of different system components, such as memory, application instances, and / or management stations in a host. The methods and apparatus may be embodied in the form of program code, which may be implemented so that if the program code is received and loaded into and executed by a machine including a computer, the machine becomes an apparatus for implementing the embodiments described herein. If implemented on a processor, the program code combines with the processor to provide a unique apparatus that operates similarly to a specific logic circuit. The program code (software-based logic) used to implement the method is embodied as part of the system described below.

[0057] It should be understood that the invention is not necessarily limited in its application to the details of construction and arrangement of components and / or methods set forth in the following description and / or illustrated in the drawings and / or examples. The invention is capable of other embodiments or may be practiced or carried out in various ways.

[0058] Now referring to the accompanying drawings, Figure 1 A simplified diagram of a system 100 for maintaining consistency in file system objects is shown. More specifically, Figure 1An example environment 100 is shown that includes a host computing device ("host") (shown as devices 104, 106, 108, and 110) accessing a data storage system 116 via a network 114. The data storage system 116 includes a storage processor (SP) 118 and a memory 120. An embodiment of the data storage system 116 may include multiple SPs. For example, multiple SPs may be provided in the form of circuit board assemblies or blades that can be inserted into a chassis that encapsulates and cools the SPs. The chassis has a backplane for interconnecting the SPs, and cables may be used to make other connections between the SPs. However, it should be understood that no specific hardware configuration is required, as any number of SPs may be provided, including a single SP, and the SP 118 may be any type of computing device capable of handling host IO.

[0059] Similarly, although Figure 1 Only a single data storage system 116 is shown, and it should be understood that many of the operations described herein involve activities occurring between multiple data storage systems, i.e., between a source data storage system and a target data storage system. Therefore, an additional storage system 122 is shown in dashed lines. The source system and the target system may be connected via a network 114 or by any suitable means. The specific structure shown for the data storage system 116 is intended to represent the source and target, but it should be understood that the source system and the target system may differ in detail.

[0060] The network 114 may be any type of network or combination of networks, such as a storage area network (SAN), a local area network (LAN), a wide area network (WAN), the Internet, and / or some other type of network or combination of networks. The hosts 104, 106, 108, and 110 may be connected to the SP 118 using a variety of technologies, such as Fibre Channel, iSCSI, NFS, SMB 3.0, and CIFS. Any number of hosts 104, 106, 108, and 110 may be provided using any of the above protocols, some subset thereof, or other protocols in addition to the protocols shown. The SP 118 is operable to receive IO requests according to block-based protocols and file-based protocols, and respond to such IO requests by reading or writing to the storage 120 or memory 130.

[0061] As can be seen, SP 118 includes one or more communication interfaces 124 and a set of processing units 126. Communication interface 124 includes a SCSI target adapter and a network interface adapter for converting electronic and / or optical signals received via network 114 into electronic form for use by SP 118. The set of processing units 126 includes one or more processing chips and / or components. In a specific example, the set of processing units 126 includes multiple multi-core CPUs.

[0062] The memory 130 includes volatile memory (e.g., RAM) and non-volatile memory, such as one or more ROMs, disk drives, solid-state hard disks, etc. The group of processing units 126 and the memory 130 together form a control circuit that is constructed and arranged to perform various methods and functions as described herein, for example, alone or in cooperation with similar control circuits on another data storage system. In addition, the memory 130 includes various software structures implemented in the form of executable instructions. If the executable instructions are run by a group of processing units 126, the group of processing units 126 performs the operation of the software structure. Although certain software structures are specifically shown and described, it should be understood that the memory 130 generally includes many other software structures, such as an operating system 128 and various applications, processes, and daemons.

[0063] like Figure 1 As shown, the memory 128 includes a replication manager 132 that controls the establishment of replication settings on representative data objects 134, 140, and 142. The replication manager 132 establishes replication settings on a per-data object basis, conducts replication sessions, and coordinates replication activities, including recovery and failover. In some examples, the replication manager 132 works in conjunction with a replication device 138. The replication device 138 assists in performing continuous replication with another data storage system (e.g., with a target data storage system), which can be located at a remote location. In some examples, the replication device 138 takes the form of a separate hardware unit. Any number of such hardware units can be provided, and they can work together, for example, in the form of a cluster.

[0064] The operating system 128 also includes objects 134, 140, and 142. Examples of objects may include index nodes or file IDs. Objects 134, 140, and 142 may be controlled by a separate instance of a kernel 150 of the operating system 128. Exemplary object 134 includes a mapping record 144, which is used to identify and define the location of the object 134 to maintain consistency between file systems, as explained herein. To this end, the mapping record may include an object ID 146 and a path 148.

[0065] Figure 2A block diagram of an implementation of a system 200 including a software application and related hardware for maintaining FS object consistency is shown. Figure 2 The illustrative system 200 may have Figure 1 Functional components and software common to the storage processor 118 of the system 200. In one implementation, the system 200 can be used to modify the name or location of a FS object to be synchronized with the name or location of another FS object.

[0066] The implementation of system 200 includes a plurality of modules 204 and 206 through 224 executed by processor 202 to manage memory processes before and during synchronization operation 214. Figure 2 In the illustrated embodiment, the system 200 includes a memory 202 having a plurality of mapping records 207 associating a plurality of IDs 206 with a plurality of FS objects 209 .

[0067] The processor 202 may be configured to access the memory 204 to identify an inconsistency between the first FS object 211 and the second FS object 213 in the plurality of FS objects 209. The processor may also be configured to update a corresponding mapping record in the plurality of mapping records 207 to associate the second ID 219 with a modified name of the plurality of names 212 or a modified location of the plurality of locations 210 corresponding to the identified inconsistency 223.

[0068] According to some embodiments of the system 200, identifying the inconsistency 223 includes comparing one or more paths 208 associated with the first ID 217, wherein a plurality of corresponding paths 208 are associated with a plurality of hard links to the modified location of the second FS object 219. According to some embodiments of the system 200, identifying the inconsistency 223 includes comparing an attribute 220 associated with the first ID 217 and a corresponding attribute associated with the second ID 219. These and other processes explained herein may be performed in response to the processor 202 executing the determine consistency algorithm 222.

[0069] As another example, identifying the inconsistency may include comparing a first checksum value of the plurality of checksum values ​​218 associated with the first path 208 of the first ID 217 and a second checksum value associated with the second path of the second ID 219. The processor 202 of an embodiment of the system 200 may also be configured to prompt a user for user input 224 to select a correct version to be replicated between the first FS object and the second FS object. For example, the user may designate the first FS object 211 as the primary copy to be replicated to the plurality of FS objects.

[0070] like Figure 2 As shown, the processor may also be configured to store multiple mapping records in the mapping table 216. Figure 1As with the other modules shown, the mapping table 216 and the mapping record 207 are described separately, but other embodiments may combine functionality. For example, the processor 202 may be used to store the plurality of mapping records 207 of another embodiment in at least one of the following: an ordered log file (not shown), a key-value store (not shown), a database, a first FS object 211, a second FS object 219, or as a special extension of the plurality of attributes 220 on the second identifier 219. The consistency determination algorithm 222 may scan the memory to determine inconsistencies 223 prior to a synchronization operation.

[0071] Figure 3 A block diagram showing the logical relationships between various aspects of an illustrative FS object 300 is shown. The figure shows the logical connections between the file path 302, the file index node 304, and the file data 306 of the FS object 300. In Linux / Unix file systems, metadata is stored in a structure called an index node. Figure 3 As shown, index node 304 includes a unique ID and attributes.

[0072] Figure 1 The exemplary FS object 300 of includes three parts. That is, the FS object 300 includes: file data 306, metadata (e.g., attributes) of the index node 304 that stores file / directory details (e.g., identifier, size, timestamp, name, type, pointer to data, etc.), and the file path 302 (i.e., location).

[0073] As discussed in this article, each FS object (e.g., file or directory) on a file system has a unique identifier that persists throughout the existence of the object, even if the object is renamed, moved, its attributes or data are changed, or is associated with additional single or multiple hard links.

[0074] In Linux / Unix file systems, the identifier is the inode number, and in Windows file systems, the identifier is the file ID. The object store includes one or more paths to each FS object, and a unique identifier for each FS object.

[0075] A file system, such as the file system of FS object 300, may include files and directories (e.g., folders). Directories may include files or other directories. In this case, these directories themselves may include files and directories. The location of each file system may start from its root directory (i.e., root node).

[0076] Figure 4A block diagram of an example of a file system 400 is shown, which includes a tree including multiple directories and files in addition to associated index nodes. More specifically, the file system tree 400 includes a root directory 402 and an associated first index node 404. Under the root directory 402, the file system tree 400 includes a directory A 406, a directory B 408, and a directory C 410. The directory 406, the directory 408, and the directory 410 are associated with an index node 412, an index node 414, and an index node 416, respectively.

[0077] like Figure 4 As shown, directory A 406 includes a first file 418 associated with a sixth index node 420 and a second file 422 associated with a seventh index node 424. Directory C 410 includes directory D 426 and an associated index node 428, and a fifth file 430 associated with an index node 432. Directory C 410 also includes directory E 434 associated with an index node 436.

[0078] The D directory 426 may include a third file 438 associated with the tenth index node 440. A fourth file 442 associated with the eleventh index node 444 may additionally be included under the D directory 426.

[0079] To access a file, a program may specify a path through the file system tree, starting at the root directory 402 and continuing throughout the directory tree until the file is reached. For example, Figure 4 The path of the third file 438 in may be: “ / C / D / File3”.

[0080] Each directory 402, 406, 408, 410, 426, and 434 stores a list of its directory entries (e.g., the files and directories it contains). Each entry may include a name and an identifier (e.g., Figure 4 Each directory 402, 406, 408, 410, 426, and 434 may additionally include an entry pointing to its own inode (".") and to its parent directory inode ("..").

[0081] Figure 5 A schematic diagram 500 is shown of illustrative directory data, more specifically, including Figure 4Schematic diagram 500 of data in directory C 410 of file system tree 400. As shown in diagram 500, directory C 502 includes its own directories D and E and a list of its own files (i.e., file 5). Inode 5, inode 8, and inode 9 for each directory and file are additionally included on directory C 502, associated with their respective files and directories. Directory C 502 additionally stores its own inode 4, as well as inode 1 of its corresponding root directory.

[0082] Directory structure 502 points to structure 504 that includes index node 5 and corresponds to directory D. Structure 504 includes information related to permissions, owner / group IDs, directories, and data blocks. Structure 504 of directory D additionally points to data blocks 506, 508, and 510. Structure 512 includes index node 9 and may correspond to Figure 4 E 434, and another pointer to the directory with Figure 4 The fifth file 430 is related to information 430 (not shown).

[0083] The file system can perform operations on files and directories, such as create, open, delete, write and append operations. One of the operations is a move operation, which enables a user to change the location of a file / directory. According to an embodiment of the system, the move operation only changes the file / directory path (e.g., does not change the file data). In other words, the path of the file has changed after the move operation, but the data itself and its index nodes and other attributes have not been relocated or changed. By keeping the file data and index nodes unchanged, the processing cycle can be reduced compared to traditional systems that delete and replace data. After the move operation, the same file attributes and data can be accessed using the new path.

[0084] This feature is Figure 6 is shown in, which shows something similar to Figure 3 The FS object 600 of the FS object 300 symbolically performs a change of location operation. That is, the old path 602 is deleted (as designated by “X”), and the new path 608 is allocated to the file index node 604 and the file data 606.

[0085] Regardless of the move operation, the file data may include at least one path. However, multiple paths may be used to access the file data 606. Each of these paths is a hard link. After the initial file and its data are created, different paths may be used to create more hard links pointing to the FS object.

[0086] Figure 7 A file system 700 is shown, which includes Figure 4 400, but the objects are renamed and assigned new locations / paths. Figure 4 , directory C 410 has been renamed directory F and has been moved under directory B 408. Figure 7 The number in Figure 4 Inherited to illustrate rename / restructure operations and to show that the association between inode and file / directory remains unchanged during the operation.

[0087] More specifically, go to Figure 7 , the block diagram shows an example of a file system 700 that includes a tree including multiple directories and files in addition to associated index nodes. More specifically, the file system tree includes a root directory 402 and an associated first index node 404. Under the root directory 402, the file system tree includes a directory A 406 and a directory B 408. Directory F 410 has been moved under directory B 408. Figure 7 As shown, directory A 406 continues to be associated with second index node 412, just as directories 408 and 410 continue to be associated with third index node 414 and fourth index node 416, respectively.

[0088] like Figure 7 4, directory A 406 includes a first file 418 associated with a sixth index node 420 and a second file 422 associated with a seventh index node 424. Renamed directory F 410 includes directory D 426 and an associated index node 428, and a fifth file 430 associated with an index node 432. Directory C 410 also includes directory E 434 associated with an index node 436.

[0089] The D directory 426 may include a third file 438 associated with the tenth index node 440. A fourth file 442 associated with the eleventh index node 444 may additionally be included under the D directory 426.

[0090] Figure 8 8 shows a block diagram of an example of a file system 800 that includes a tree of multiple directories and files in addition to associated index nodes. Figure 4 For file system 400, file system 800 may be a target or other copy that wishes to be synchronized with file system 400. Although other naming of files and directories remains the same Figure 4 The source file system 400 is the same as shown in FIG. Figure 8 The inode numbers of the source file system 800 in are different to reflect the unique ID number associated with each directory / file.

[0091] More specifically, the file system tree includes a root directory 802 and an associated eleventh index node 804. Under the root directory 802, the file system tree includes directory A 806, directory B 808, and directory C 810. Directory 806, directory 808, and directory 810 are associated with index nodes 812, index nodes 814, and index nodes 816, respectively.

[0092] like Figure 8 As shown, directory A 806 includes a first file 818 associated with a sixteenth index node 820, and a second file 822 associated with a seventeenth index node 824. Directory C 810 includes directory D 826 and an associated index node 828, and a fifth file 830 associated with an eighteenth index node 832. Directory C 810 also includes directory E 834 associated with a twentieth index node 836.

[0093] The D directory 826 may include a third file 838 associated with the twentieth index node 840. A fourth file 842 associated with the twenty-first index node 844 may additionally be included under the D directory 426.

[0094] Fig. 9 is included for copying Figure 8 The ID map 900 of the file system 800 may include Figure 1 The first column 902 shows the mapping record 144. Figure 4 The second column 904 shows the identifier (eg, inode number) associated with the object of the source file system 400. Figure 8 An identifier (ie, inode number) associated with an object of the target file system 800.

[0095] In one example, the first entry 906 in the first row corresponds to Figure 4 The first index node 404 of the root directory 402 of the file system 400. The second entry 908 in the first row corresponds to Figure 8 In this way, the ID mapping 900 logically associates the first index node of the source file system 400 with the eleventh index node of the target file system 800.

[0096] The first entry 910 in the second row corresponds to Figure 4 The second entry 912 in the second row corresponds to the second index node 412 of the directory A 406 of the file system 400. Figure 8The twelfth index node 812 of the directory A 806 of the target file system 800 is associated with the source file system 400. Therefore, the ID mapping 900 associates the second index node of the source file system 400 with the twelfth index node of the target file system 800. Fig. 9 As shown, ID map 900 similarly associates index node 3 with index node 13; index node 4 with index node 14, and so on.

[0097] ID map 900 may be used if a resync operation begins to apply changes to the names and locations on target file system 800 to match source file system 400. More specifically, inode 4 of the source file system will appear at the / B / F path, and its corresponding target inode 14 will appear at the / B path. Since the synchronization direction may be from source file system 400 to target file system 800, the synchronization operation may include accessing ID map 900 to move the / C directory (inode 14) to its corresponding inode location / B / F on source file system 800.

[0098] Fig.10 is a block diagram of a system 1000 that performs multi-way or n-way synchronization of multiple file system trees 1002, 1004, 1006, and 1008. Arrows 1010, 1012, 1014, and 1016 illustrate the order in which changes to the names or locations of objects in one file system tree may be updated relative to one another in an embodiment of a resynchronization operation.

[0099] In one example, the system 1000 may synchronize multiple file system replicas that have been changed independently, and all changes will be merged into all replicas. For example, synchronization may begin by synchronizing objects in the replica file system tree 1002 with the file system tree 1004 described herein using mapping records. After synchronization, the file system trees 1002 and 1004 are identical and both include changes made to both objects.

[0100] The system 1000 may then synchronize the file system tree 1004 with the file system tree 1006, continuing in the same manner to synchronize the file system tree 1006 with the file system tree 1008. The resulting file system tree 1008 may include the merged changes from all other file system trees 1002, 1004, and 1006. The system 1000 may then synchronize the file system tree 1008 with the file system tree 1002. In this way, all object copies may be identical and include changes made on all other object copies.

[0101] In another example of synchronization using the master copy method, system 1000 can synchronize file system tree 1002 (e.g., master copy) with file system tree 1004 based on a defined policy. The system can also synchronize file system tree 1002 with file system tree 1006 according to a defined policy. If a file is copied from file system tree 1006 to file system tree 1002, the process can be repeated by synchronizing file system tree 1002 with file system tree 1004 according to a defined policy. If desired, only files copied from file system tree 1008 to file system tree 1002 (e.g., master copy) can be synchronized.

[0102] Where chained copies are implemented, file system tree 1004 may store, access or otherwise include an object ID corresponding to the object ID of file system tree 1002. File system tree 1006 may include an object ID corresponding to the object ID of file system tree 1004.

[0103] The policy may be user defined. For example, the system may prompt the user to define a policy that selects one replica as the master and makes all other replicas the same as the master. Another policy may cause the system to select the latest version from each replica. The system may use the latest version of the replica as the master and use it to update all other versions. In response to a conflict, the system of another embodiment may initiate a prompting the user to select between the replicas which replica will be the master to update all other replicas.

[0104] Fig.11 An embodiment of a method 1100 for maintaining consistency of file system objects is shown. For example, the method 1100 may be performed by Figure 1 System 100 and Figure 2 More specifically, turning to the flowchart, at 1102, the system can generate (and synchronize to) one or more copies of a single file tree. In this way, the system can copy each object (e.g., file or folder) to a corresponding target location in the target file system tree.

[0105] At 1104, method 1100 may include mapping the first ID of an object in the source file tree to a corresponding second object in the target file tree. Embodiments of the system use records mapped between the source object ID and each corresponding target object ID. If the object is copied from the source file system to the target file system, the system may also copy attributes, such as the last modification date. In this way, from the source file system to the target file system, the attributes are identical, i.e., the attributes in the source file system and the target file system are identical. ID mapping or other mapping records may be stored in: an ordered log file, a key-value store, a database, an object on the source side and / or the target side, or as a special extended attribute on the second ID.

[0106] Embodiments of the system may use different instances of the kernel to control the first object and the second object at 1106. For example, Figure 1 The kernel 150 may be used to control objects of the target and source file system trees.

[0107] If resynchronization of the source and target file systems is required, an embodiment of method 1100 may scan the first file system and the second file system at 1108. The scan may ultimately be used to identify changes made to the target and / or source file systems since the last synchronization.

[0108] The comparison for determining any such changes is represented at 1110 of the flowchart. As described herein, the system can maintain a mapping record for each file system tree. The mapping record can include an ID mapping as well as a path mapping, the path mapping including paths associated with objects in each tree. By comparing the path mapping of the source file system with the path mapping of the target file system, and by associating the source and target objects using the ID mapping, the system can identify any changes made on either file system tree since the most recent synchronization.

[0109] In one implementation, the system may determine whether the source object ID and the corresponding target object ID exist in both file system trees at 1112. If so, the system may determine whether the paths and attributes of the target object and the source object are the same. If it is determined that the paths and attributes of the target object and the source object are the same, the system may not perform the operation of synchronizing the objects and loop back to 1108.

[0110] Alternatively, at 1112, the system may determine that the paths or attributes of the target object and the source object are different. For example, the system may detect that the object is moved in one location or moved in two locations by determining that the associated paths are different. If the object includes multiple paths, the different paths between the file system trees may be deleted and a hard link may be created for the new path. In another example, the system may determine that the object has been created since the last synchronization operation by detecting that the object exists in only one location. Alternatively, the object may have been deleted since the last synchronization operation.

[0111] According to certain embodiments, in addition to comparing object properties, method 1100 can also identify objects that have changed at 1112. For example, the system can calculate a checksum value for each object. The checksum value can be included by the system as a parameter for object comparison.

[0112] In another example, the system can detect inconsistencies by comparing a first location of a first FS object within a first path and a second location of a second FS object within a second path. In another or the same embodiment, the system can compare one or more paths associated with a first ID and a plurality of corresponding paths associated with a second ID. Another way to determine consistency can include comparing an attribute associated with a first ID and a corresponding attribute associated with a second ID, or comparing a plurality of mapping records and a plurality of subsequently generated mapping records.

[0113] At 1114, method 1100 may include applying a defined policy to determine how to merge or otherwise synchronize the file system trees. According to certain embodiments, the system may select or prompt the user to select a synchronization direction (e.g., from source to target or vice versa). The system may prompt the user to select a resynchronization result. For example, the user may be prompted to select a source file system to be copied so that the target file system is the same as the source file system. In another example, the user may be prompted to have the system select the latest (e.g., most recently modified) copy between corresponding objects in the target file system and the source file system. In another example, the system may prompt the user to select the correct version of the object. For example, multiple corresponding objects were modified prior to resynchronization, and the user may select the changes made to one of the objects as the version to be copied to another object or objects.

[0114] At 1116, the system can associate the second ID with a new name and / or location (e.g., path). The association can be used to update the mapping record at 1118 to synchronize the first file system with the second file system. That is, the system can initiate a synchronization operation at 1118. Examples of synchronization operations can include copying the source version, the latest version, or some combination including merging two versions. Other settings may include deleting files that have been deleted since the last synchronization operation, or always synchronizing to the source location.

[0115] Fig.12 A block diagram of an example computing device 1200 is shown that can optionally be used to perform one or more aspects of the techniques described herein. In some implementations, one or more of a client computing device, a user-controlled resource engine, and / or other components can include one or more components of the example computing device 1200.

[0116] The computing device 1200 typically includes at least one processor 1214 that communicates with a number of peripheral devices through a bus subsystem 1212. These peripheral devices may include a storage subsystem 1224, which includes a memory subsystem 1225 and a file storage subsystem 1226, as well as a user interface output device 1220, a user interface input device 1222, and a network interface subsystem 1216. The user interface input device 1222 of one implementation may include a responsive volume setting and other features. The input and output devices allow the user to interact with the computing device 1200. The network interface subsystem 1216 provides an interface to an external network and is coupled to corresponding interface devices in other computing devices.

[0117] The user interface input device 1222 may include a keyboard, a mouse, a trackball, a pointing device such as a touch pad or a graphic tablet, a scanner, a touch screen integrated into a display, an audio input device such as a voice recognition system, a microphone, and / or other types of input devices. In general, the use of the term "input device" is intended to include all possible types of devices and ways of inputting information into the computing device 1200 or a communication network.

[0118] User interface output device 1220 may include non-visual displays such as a display subsystem, a printer, a fax machine, or an audio output device. The display subsystem may include a flat panel device such as a cathode ray tube (CRT), a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem may also provide a non-visual display, such as through an audio output device. In general, the term "output device" is used to include all possible types of devices and methods for outputting information from computing device 1200 to a user or another machine or computing device.

[0119] Storage subsystem 1224 stores programming and data structures that provide the functionality of some or all of the modules described herein. For example, storage subsystem 1224 may include logic for performing selected aspects of the methods and implementing the various components described in the previous figures.

[0120] These software modules are typically executed by processor 1214 alone or in combination with other processors. The memory subsystem 1225 used in the storage subsystem 1224 may include multiple memories, including a main random access memory (RAM) 1230 for storing instructions and data during program execution and a read only memory (ROM) 1232 storing fixed instructions. The file storage subsystem 1226 can provide persistent storage for program and data files, and may include a hard drive, a floppy disk drive and associated removable media, a CD-ROM drive, an optical drive, or a removable media cartridge. Modules that implement the functionality of certain implementations may be stored in the storage subsystem 1224 by the file storage subsystem 1226, or in other machines accessible to one or more processors 1214.

[0121] The bus subsystem 1212 provides a mechanism for the various components and subsystems of the computing device 1200 to communicate with each other as intended. Although the bus subsystem 1212 is schematically shown as a single bus, alternative implementations of the bus subsystem may use multiple busses.

[0122] The computing device 1200 may be of various types, including a workstation, a server, a computing cluster, a blade server, a server farm, or any other data processing system or computing device. Due to the ever-changing nature of computers and networks, Fig.12 The description of computing device 1200 is merely a specific example for the purpose of illustrating certain implementations. Many other configurations of computing device 1200 may have more Fig.12 The computing devices shown may have greater or fewer components.

[0123] The terms "including", "having" and variations thereof mean "including but not limited to". The term "comprising" means "including and limited to". The term "consisting essentially of" means that the composition, method or structure may include additional ingredients, steps and / or parts, but only if the additional ingredients, steps and / or parts do not materially change the basic and novel characteristics of the claimed composition, method or structure. As used herein, the singular forms "a", "an" and "the" include plural references unless the context clearly indicates otherwise. For example, the term "a complex" or "at least one complex" may include a plurality of complexes, including mixtures thereof.

[0124] In the present application, various embodiments of the present invention can be presented in range format. It should be understood that the description of the range format is only for convenience and brevity, and should not be interpreted as a fixed limitation on the scope of the present invention. Therefore, the description of the range should be considered to have specifically disclosed all possible sub-ranges and individual numerical values ​​within the range. For example, the description of a range such as from 1 to 6 should be considered to have specifically disclosed sub-ranges from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6, etc. and individual numbers within the range, such as 1, 2, 3, 4, 5 and 6. No matter how wide the range is, this applies.

[0125] When a numerical range is indicated herein, it is meant to include any listed numerals (fractional or integer) within the indicated range. The phrases "range between a first indicated number and a second indicated number" and "range from a first indicated number to a second indicated number" are used interchangeably herein to include the first indicated number and the second indicated number and all fractions and integers between the two.

[0126] It should be understood that, for clarity, certain features of the present invention described in the context of different embodiments may also be provided in combination in a single embodiment. Conversely, for brevity, the various features of the present invention described in the context of a single embodiment may also be provided individually, in any suitable sub-combination, or as any suitable other embodiment of the present invention. Some features described in the context of various embodiments are not considered to be essential features of these embodiments, unless the embodiment is inoperable without these elements.

[0127] Although the present invention has been described in conjunction with the specific embodiments of the present invention, it is obvious that many alternatives, modifications and variations will be apparent to those skilled in the art. Therefore, it is intended to cover all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims.

[0128] The purpose of the applicant is that all publications, patents and patent applications mentioned in this specification are incorporated into this specification by reference in their entirety, just as each individual publication, patent or patent application is specifically and individually indicated when it is mentioned to be incorporated by reference herein. In addition, the citation or identification of any reference in this application should not be construed as an admission that the reference is available as a prior art of the present invention. With regard to the use of section headings, section headings should not be construed as necessary limitations. In addition, any one or more priority documents of the present application are incorporated into this application by reference in their entirety.

Claims

1. A system for maintaining consistency of a file system (FS) object, characterized in that: include: Memory, including: a plurality of mapping records, each mapping record having a first identifier (ID) and a second ID for associating a first FS object stored in a first storage device and a second FS object stored in a second storage device, wherein the first FS object and the second FS object are controlled by different instances of a FS kernel; and A processor is configured to access the memory to: identifying an inconsistency between the first FS object and the second FS object; and A corresponding mapping record of the plurality of mapping records is updated to associate the second ID with a modified name or a modified position corresponding to the identified inconsistency.

2. The system according to claim 1, characterized in that The processor identifies the inconsistency by identifying a difference between corresponding positions of the first FS object and the second FS object.

3. The system according to claim 1, characterized in that The processor identifies the inconsistency by identifying a difference between corresponding names of the first FS object and the second FS object.

4. The system according to claim 1, characterized in that The processor is further configured to synchronize the second FS object to a third FS object of a third storage device by associating a third ID with the modified name or the modified position associated with the second ID.

5. The system according to claim 4, characterized in that The processor is further configured to identify a second inconsistency between the modified name or location and a corresponding location or name of the third FS object.

6. The system according to claim 4, characterized in that The processor is further configured to synchronize the first FS object to the third FS object by associating the first ID with a second modified name or a second modified position associated with the third ID.

7. The system according to claim 1, characterized in that The processor is further configured to synchronize the plurality of mapping records by performing the updating in response to a synchronization operation.

8. The system according to claim 1, characterized in that The identifying an inconsistency includes comparing a first location of the first FS object within a first path and a second location of the second FS object within a second path.

9. The system according to claim 1, characterized in that The identifying inconsistencies includes comparing one or more paths associated with the first ID and a plurality of corresponding paths associated with the second ID, wherein the plurality of corresponding paths are associated with a plurality of hard links to the modified location of the second FS object.

10. The system according to claim 1, characterized in that The identifying inconsistencies includes comparing an attribute associated with the first ID and a corresponding attribute associated with the second ID.

11. The system according to claim 1, characterized in that The identifying inconsistency includes comparing a first checksum value associated with a first path of the first ID and a second checksum value associated with a second path of the second ID.

12. The system according to claim 1, characterized in that The identifying inconsistencies includes comparing the plurality of mapping records to a subsequently generated plurality of mapping records.

13. The system according to claim 1, characterized in that The processor is further configured to reallocate the first ID to a third FS object, wherein the first FS object has been deleted.

14. The system according to claim 1, characterized in that The first memory and the second memory are modified before a resynchronization operation, and wherein the processor is further configured to prompt a user to select the first FS object instead of the second FS object for replication.

15. The system according to claim 1, characterized in that The first memory and the second memory are modified before a resynchronization operation, and wherein the processor is further configured to prompt a user to select a most recently updated FS object between the first FS object and the second FS for replication.

16. The system according to claim 1, characterized in that The first memory and the second memory are modified before a resynchronization operation, and wherein the processor is further configured to prompt a user to select a correct version between the first FS object and the second FS object for replication.

17. The system according to claim 1, characterized in that The processor is further configured to prompt a user to designate the first FS object as a primary copy for replication to multiple FS objects.

18. The system according to claim 1, characterized in that The processor is further configured to store the plurality of mapping records in at least one of: an ordered log file, a key-value store, a database, the first FS object, the second FS object, or as a special extended attribute on the second identifier.

19. The system according to claim 1, characterized in that The processor is further configured to store the plurality of mapping records in a mapping table.

20. A method of modifying the name or location of a file system (FS) object to synchronize with the name or location of another FS object, characterized in that: The method comprises: mapping a first identifier (ID) associated with a first FS object of a first storage device to a second ID associated with a second FS object of a second storage device; controlling the first FS object and the second FS object using different instances of a FS kernel; identifying an inconsistency between the first FS object and the second FS object; and A corresponding mapping record of a plurality of mapping records is updated to associate the second ID with a modified name or a modified position corresponding to the identified inconsistency.

21. The method according to claim 20, characterized in that The identifying inconsistencies further includes scanning the first memory and the second memory prior to a synchronization operation.

22. The method according to claim 20, characterized in that It also includes updating the corresponding name or the corresponding location of each FS object in a plurality of FS objects that include a copy of the first object.

23. The method according to claim 20, characterized in that The first FS object and the second FS object are included in a plurality of n FS objects, and the method further includes associating the modified name or the modified position with the n-1th name or the n-1th position associated with the n-1th ID of the plurality of n FS objects, and associating the modified name or the modified position of the n-1th ID with the nth name or the nth position associated with the nth ID of the plurality of n FS objects.

24. The method according to claim 23, characterized in that The method also includes associating the modified name or the modified position of the nth ID with the first name or the first position associated with the first ID.

25. The method according to claim 20, characterized in that Mapping the first ID also includes mapping at least one of an index node or a file ID.

26. At least one non-transitory computer-readable medium comprising instructions that, in response to one or more processors executing the instructions, cause the one or more processors to: mapping a first identifier (ID) associated with a first file system (FS) object of a first storage device to a second ID associated with a second FS object of a second storage device; controlling the first FS object and the second FS object using different instances of a FS kernel; identifying an inconsistency between the first FS object and the second FS object; and A corresponding mapping record of a plurality of mapping records is updated to associate the second ID with a modified name or a modified position corresponding to the identified inconsistency.