Faster replay of metadata and data operations using an inode number-based dependency graph
By using dependency graphs in metadata operations to identify independent and dependent operations, the delay problem caused by serial execution of metadata operations in the prior art is solved, more efficient playback and resource utilization are achieved, and data accessibility is improved sex.
Patent Information
- Application Number
- CN201980037905.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-04-04
- Filing Date
- 2019-03-29
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2039-03-29
AI Technical Summary
The existing metadata and data operation playback technology cannot effectively determine whether metadata operations are independent or dependent relative to other operations, resulting in metadata operations being performed serially, increasing the playback operation time and client delay, affecting Accessibility of data.
By tracking objects affected by metadata operations, such as files, inodes, and directories, using dependency graphs to identify independent operations that can be performed in parallel and dependencies that must be performed in serial, ensuring that operations are repetitive in a consistent and resource utilization manner put.
It significantly improves the replay speed of metadata and data operations, reduces client delay, optimizes resource usage, and improves data accessibility.
Smart Images

Figure CN112236753B_ABST
Abstract
Description
[0001] Related Applications
[0002] This application claims priority to U.S. non-provisional patent application No. 15 / 945,178, filed on April 4, 2018, entitled “FASTER REPLAY OF METADATA AND DATA OPERATIONS USING INODE NUMBER BASED DEPENDENCY GRAPH,” the entire contents of which are incorporated herein by reference. Technical Field
[0003] Embodiments of the present disclosure relate to the field of computing, and more particularly to faster replay of metadata and data operations using an inode number-based dependency graph. Background Art
[0004] A computing system, such as a client device, a storage environment, a server, a distributed network, or a cloud computing environment, processes data operations and metadata operations. Data operations include read operations that read data from an object (such as a file), and write operations that write data to an object. Metadata operations include other types of operations, such as create operations, link operations, unlink operations, set attribute operations, rename operations, extend size operations, etc. These operations are performed by the computing system's file system in a specific order, and therefore the objects are modified in a specific order by the performed operations.
[0005] Two situations where operations can be replayed (e.g., executed again) are the copying of operations from non-volatile random access memory (NVRAM) to a storage device and the replay of operations after a system panic. In one example, data of a computing device is copied to a second computing device, such as data within a primary volume hosted by the computing device is copied to a secondary volume hosted by the second computing device. In particular, the computing system can implement the incoming operation locally on the primary volume, and can copy the incoming operation as a copied operation that is transmitted to the second computing device for replay (e.g., for execution on the secondary volume). Because the state of the secondary volume should be consistent with the state of the primary volume (e.g., the same data, file structure, etc.), the order in which the incoming operation was previously locally implemented (e.g., the order in which the objects were modified by the operation) should be preserved at the second computing device. This can be done by assigning sequence numbers to the operations according to the order in which the operations were previously executed, and then serially executing the copied operations according to the sequence numbers. Otherwise, the secondary volume will be inconsistent with the primary volume.
[0006] In another example, incoming operations are executed on NVRAM and tracked using the node's non-volatile log (NVLog). When a replay trigger event occurs (e.g., node panic, node taken over by a high-availability partner node, node boot, etc.), the operations tracked in the NVLog are replayed. The operations must be replayed in the same order to ensure consistency.
[0007] Sequence numbers are used to enforce the order of replay of operations. Sequence numbers and certain rules are used to replay operations in a manner consistent with the state of the object originally modified by the initial execution of the operation. In some instances, when data operations are independent of each other (e.g., a write operation to file 1 and a write operation to file 2), data operations can be executed in parallel, while dependent data operations are executed serially (e.g., a first write operation to range 1 of file 1, and a second write operation to range 2 of file 1 overlapping range 1). However, current replay technology has technical limitations: namely, it is not possible to determine whether metadata operations are dependent or independent with respect to other operations. Therefore, metadata operations are executed serially and are mutually exclusive with write operations. Forcing metadata operations to be executed serially in order to achieve consistency leads to degraded operation of the computing system because client latency is significantly increased, time and computing resources used to replay operations are increased, etc. In one example, the determination of replaying operations independently or serially can be performed at the volume level, and thus operations pointing to two different volumes have been considered to be independent of each other. Summary of the invention
[0008] One or more techniques and / or one or more computing devices for replaying metadata and data operations are provided herein. Such replay techniques provide a technical solution to a technical problem deeply rooted in computing technology, which is about how to identify independent operations that can be replayed in parallel and dependent operations that must be replayed serially. Conventional replay techniques cannot determine whether metadata operations are independent or dependent with respect to other operations, and are therefore executed serially and are mutually exclusive with write operations. This significantly increases the time of the replay operation, which can affect client latency and accessibility to data. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Figure 1 is a component block diagram illustrating an example clustered network in which embodiments of the present invention may be implemented.
[0010] Figure 2 is a component block diagram illustrating an example data storage system in which embodiments of the present invention may be implemented.
[0011] Figure 3 is a flow chart illustrating an example method for replaying metadata and data operations.
[0012] Figure 4 is a component block diagram illustrating an example system for replaying metadata and data operations.
[0013] Figure 5 is a component block diagram illustrating an example system for replaying metadata and data operations as part of a replication operation.
[0014] Figure 6 is an example of a computer-readable medium in which embodiments of the present invention may be implemented.
[0015] Figure 7 is an example computing environment in which embodiments of the invention may be implemented. DETAILED DESCRIPTION
[0016] Some examples of the claimed subject matter are now described with reference to the accompanying drawings, wherein the same reference numerals are generally used to refer to the same elements throughout. In the following description, for the purpose of illustration, a large number of specific details are set forth in order to provide an understanding of the claimed subject matter. However, it is apparent that the claimed subject matter can be practiced without these specific details. Nothing in this detailed description is considered to be prior art.
[0017] One or more techniques and / or one or more computing devices for replaying metadata and data operations are provided herein. Such replay techniques provide a technical solution to a technical problem deeply rooted in computing technology, which is about how to identify independent operations that can be replayed in parallel and dependent operations that must be replayed serially. Conventional replay techniques cannot determine whether metadata operations are independent or dependent with respect to other operations, and are therefore executed serially and are mutually exclusive with write operations. This significantly increases the time of the replay operation, which can affect client latency and accessibility to data.
[0018] Accordingly, this replay technique provides significantly more than conventional replay techniques by tracking which objects (e.g., files, inodes, directories, etc.) are affected (e.g., modified) by the initial execution of a metadata operation. Thus, when a metadata operation is replayed, the metadata operation can potentially be executed in parallel with other operations that do not affect the same objects. In this way, operations can be replayed in a manner that provides data consistency and reduces latency and resource usage that would otherwise be wasted by only serially replaying metadata operations.
[0019] To provide replay of metadata and data operations, Figure 1An embodiment of a clustered network environment 100 or a network storage environment is illustrated. However, it is understood that the techniques described herein, etc. can be implemented in a clustered network environment 100, a non-cluster network environment, and / or various other computing environments (such as a desktop computing environment). That is, the present disclosure, including the scope of the appended claims, is not intended to be limited by the examples provided herein. It will be understood that with respect to the same or similar components, elements, features, items, modules, etc. discussed in the previous figures being illustrated in the later figures, similar (e.g., redundant) discussions of the foregoing can be omitted when describing subsequent figures (e.g., for simplicity and ease of understanding).
[0020] Figure 1 1 is a block diagram illustrating a clustered network environment 100 in which at least some embodiments of the techniques and / or systems described herein may be implemented. The clustered network environment 100 includes data storage systems 102 and 104 coupled via a cluster fabric 106, such as a computing network embodied as a private wireless bandwidth, Fibre Channel (FC), or Ethernet network that supports communications between the data storage systems 102 and 104 (and, for example, one or more modules, components, etc. therein, such as nodes 116 and 118). It will be appreciated that, although Figure 1 , two data storage systems 102 and 104, and two nodes 106 and 118 are illustrated, but any suitable number of such components is contemplated. In one example, nodes 116, 118 include a storage controller (e.g., node 116 may include a primary storage controller or a local storage controller, and node 118 may include a secondary storage controller or a remote storage controller) that provides access to data stored in data storage devices 128, 130 to client devices (such as host devices 108, 110). Similarly, unless otherwise expressly provided herein, the above also applies to other modules, elements, features, items, etc. mentioned herein and / or illustrated in the accompanying drawings. That is, the specific number of components, modules, elements, features, items, etc. disclosed herein is not intended to be interpreted in a limiting manner.
[0021] It will also be understood that the clustered network environment is not limited to any particular geographic area and may be clustered locally and / or remotely. Thus, in one embodiment, the clustered network may be distributed over multiple storage systems and / or located in multiple geographic locations; while in another embodiment, the clustered network may include data storage systems (e.g., 102, 104) that reside in the same geographic location (e.g., in a single on-site rack of data storage devices).
[0022] In the illustrated example, one or more host devices 108, 110 (which may include, for example, client devices, personal computers (PCs), computing devices for storage (e.g., storage servers), and other computers or peripheral devices (e.g., printers)) are coupled to respective data storage systems 102, 104 via storage network connections 112, 114. The network connection may include a local area network (LAN) or a wide area network (WAN), for example, which utilizes a network attached storage (NAS) protocol (such as the Common Internet File System (CIFS) protocol or the Network File System (NFS) protocol) to exchange data packets, a storage area network (SAN) protocol (such as the Small Computer System Interface (SCSI) or the Fibre Channel Protocol (FCP)), an object protocol (such as S3), etc. Illustratively, the host devices 108, 110 may be general purpose computers running applications, and may interact with the data storage systems 102, 104 using a client / server model for the exchange of information. That is, the host device can request data from the data storage system (e.g., data on a storage device managed by a network storage control configured to process I / O commands issued by the host device for the storage device), and the data storage system can return the result of the request to the host device via one or more storage network connections 112, 114.
[0023] The nodes 116, 118 on the clustered data storage systems 102, 104 may include a network or host nodes interconnected as a cluster, such as to provide data storage and management services to enterprises with remote locations, cloud storage (e.g., storage endpoints may be stored within a data cloud), etc. Such nodes in the clustered network environment 100 may be devices attached to the network, for example, as connection points, redistribution points, or communication endpoints. The nodes may be capable of sending, receiving, and / or forwarding information over a network communication channel, and may include any device that meets any or all of these criteria. An example of a node may be a data storage and management server attached to the network, wherein the server may include a general-purpose computer or a computing device specifically configured to operate as a server in a data storage and management system.
[0024] In one example, a first cluster of nodes such as nodes 116, 118 (e.g., a first set of storage controllers configured to provide access to a first storage aggregate, the first storage aggregate including a first logical grouping of one or more storage devices) can be located at a first storage site. A second cluster of nodes (not shown) can be located at a second storage site (e.g., a second set of storage controllers configured to provide access to a second storage aggregate, the second storage aggregate including a second logical grouping of one or more storage devices). The first cluster of nodes and the second cluster of nodes can be configured according to a disaster recovery configuration, wherein, in the event that a disaster occurs at a disaster storage site that includes the disaster cluster of nodes, the surviving cluster of nodes provides transition access to the storage devices of the disaster cluster of nodes (e.g., in the event that a disaster occurs at the second storage site, the first cluster of nodes provides client devices with transition data access to the storage devices of the second storage aggregate).
[0025] As shown in the clustered network environment 100, the nodes 116, 118 may include various functional components that cooperate to provide a distributed storage architecture for the cluster. For example, the nodes may include network modules 120, 122 and disk modules 124, 126. The network modules 120, 122 may be configured to allow the nodes 116, 118 (e.g., network storage controllers) to connect to the host devices 108, 110 via the storage network connections 112, 114, for example, allowing the host devices 108, 110 to access data stored in the distributed storage system. In addition, the network modules 120, 122 may provide connectivity to one or more other components via the cluster structure 106. For example, in Figure 1 In the example, the network module 120 of the node 116 may access the second data storage device by sending a request through the disk module 126 of the node 118 .
[0026] The disk modules 124, 126 may be configured to connect one or more data storage devices 128, 130 (such as disks or disk arrays, flash memory, or some other form of data storage means) to the nodes 116, 118. The nodes 116, 118 may be interconnected via the cluster fabric 106, for example, allowing respective nodes in the cluster to access data on data storage devices 128, 130 connected to different nodes in the cluster. The disk modules 124, 126 often communicate with the data storage devices 128, 130 according to a SAN protocol (such as SCSI or FCP, for example). Thus, as seen from an operating system on the nodes 116, 118, the data storage devices 128, 130 may appear to be locally attached to the operating system. In this manner, different nodes 116, 118, etc. may access blocks of data via the operating system, rather than explicitly requesting abstract files.
[0027] It should be understood that although the clustered network environment 100 illustrates an equal number of network and disk modules, other embodiments may include different numbers of these modules. For example, there may be multiple network and disk modules interconnected in a cluster, without a one-to-one correspondence between network and disk modules. That is, different nodes may have different numbers of network and disk modules, and the same node may have a different number of network modules than disk modules.
[0028] In addition, the host devices 108, 110 can be networked with the nodes 116, 118 in the cluster through the storage networking connections 112, 114. As an example, the corresponding host devices 108, 110 networked to the cluster can request services (e.g., exchange information in the form of data packets) of the nodes 116, 118 in the cluster, and the nodes 116, 118 can return the results of the requested services to the host devices 108, 110. In one embodiment, the host devices 108, 110 can exchange information with the network modules 120, 122 residing in the nodes 116, 118 (e.g., network hosts) in the data storage systems 102, 104.
[0029] In one embodiment, data storage device 128,130 comprises volume 132, for example, this volume 132 is the realization that information is stored on disk drive or disk array or other storage device (for example, flash memory) as the file system for data.In one example, disk array can comprise the combination of all traditional hard disk drives, all flash drives or traditional hard disk drives and flash drives.For example, volume can span the part of disk, the class set of disk, or the part of multiple disks, and usually defines the overall logical arrangement of file storage on the disk space in storage system.In one embodiment, volume can comprise the stored data of one or more files in the hierarchical directory structure as residing in this volume.
[0030] Volumes are typically configured in a format that can be associated with a particular storage system, and the corresponding volume format typically includes features that provide functionality to the volumes, such as providing the ability for the volumes to form clusters. For example, where a first storage system may utilize a first format for their volumes, a second storage system may utilize a second format for their volumes.
[0031] In the clustered network environment 100, host devices 108, 110 can utilize data storage systems 102, 104 to store data and retrieve data from volumes 132. In this embodiment, for example, the host device 108 can send data packets to the network module 120 in the node 116 within the data storage system 102. The node 116 can use the disk module 124 to forward the data to the data storage device 128, wherein the data storage device 128 includes a volume 132A. In this way, in this example, the host device can access the volume 132A to use the data storage system 102 connected by the storage network connection 112 to store and / or retrieve data. In addition, in this embodiment, the host device 110 can exchange data with the network module 122 in the node 118 within the data storage system 104 (for example, which can be remote from the data storage system 102). The node 118 can use the disk module 126 to forward the data to the data storage device 130, thereby accessing the volume 132B associated with the data storage device 130.
[0032] It will be appreciated that the replay of metadata and data operations can be implemented within the clustered network environment 100. In one example, the operations can be executed at the node 116 and replayed at the node 118. It will be appreciated that the replay of metadata and data operations can be implemented for and / or between any type of computing environment, and can be transferable between physical devices (e.g., nodes 116, nodes 118, desktop computers, tablet computers, laptop computers, wearable devices, mobile devices, storage devices, servers, etc.) and / or cloud computing environments (e.g., remote from the clustered network environment 110).
[0033] Figure 2 is a data storage system 200 (e.g., Figure 1 102, 104) in the illustrative example, which provides further details of an embodiment of a component that can implement one or more techniques and / or systems described herein. Data storage system 200 includes node 202 (e.g., Figure 1 116, 118) and a data storage device 234 (e.g., Figure 1128, 130 in the data storage device 128, 130). For example, the node 202 can be a general-purpose computer, or some other computing device that is specifically configured to operate as a storage server. The host device 205 (e.g., Figure 1 108, 110) can be connected to the node 202 over the network 216, for example, to provide access to files and / or other data stored on the data storage device 234. In one example, the node 202 includes a storage controller that provides access to data stored within the data storage device 234 to client devices (such as the host device 205).
[0034] The data storage device 234 may include a mass storage device, such as the disks 224, 226, 228 of the disk arrays 218, 22, 222. It will be appreciated that the techniques and systems described herein are not limited to the example embodiments. For example, the disks 224, 226, 228 may include any type of mass storage device, including but not limited to disk drives, flash memories, and any other similar media adapted to store information, including, for example, data (D) and parity (P) information.
[0035] The node 202 includes one or more processors 204, a memory 206, a network adapter 210, a cluster access adapter 212, and a storage adapter 214 interconnected by a system bus 242. The data storage system 200 also includes an operating system 208 installed in the memory 206 of the node 202, and the operating system 208 can, for example, implement a redundant array of independent (or inexpensive) disks (RAID) optimization technique to optimize the data reconstruction process of a failed disk in the array.
[0036] The operating system 208 may also manage communications to the data storage system, as well as communications between other data storage systems that may be in a clustered network, such as that attached to a cluster fabric 215 (eg, Figure 1 106 in). Thus, a node 202, such as a network storage controller, can respond to host device requests to manage data on a data storage device 234 (e.g., or an attached clustered device) in accordance with those host device requests. An operating system 208 can often establish one or more file systems on the data storage system 200, wherein the file system may include software code and data structures, for example, which implement a persistent hierarchical namespace for files and directories. As an example, when a new data storage device (not shown) is added to the clustered network system, the operating system 208 is notified where new files associated with the new data storage device will be stored in the existing directory tree. This is often referred to as "mounting" a file system.
[0037] In the example data storage system 200, the memory 206 may include storage locations addressable by the processor 204 and adapters 210, 212, 214 for storing relevant software application codes and data structures. For example, the processor 204 and the adapters 210, 212, 214 may include processing elements and / or logic circuits configured to execute software codes and manipulate data structures. An operating system 208, portions of which are typically resident in the memory 206 and executable by the processing elements, functionally organizes the storage system by calling storage operations that support file services implemented by the storage system, etc. It will be apparent to those skilled in the art that other processing and memory mechanisms (including various computer-readable media) may be used to store and / or execute application instructions belonging to the techniques described herein. For example, the operating system may also utilize one or more control files (not shown) to assist in the provisioning of virtual machines.
[0038] The network adapter 210 includes the mechanical, electrical, and signaling circuitry required to connect the data storage system 200 to the host device 205 over a network 216, which may include a point-to-point connection or a shared medium such as a local area network. Figure 1 108, 110) in the example may be a general purpose computer configured to execute an application. As described above, the host device 205 may interact with the data storage system 200 according to a client / host model of information delivery.
[0039] The storage adapter 214 cooperates with the operating system 208 executed on the node 202 to access information requested by the host device 205 (e.g., access data on a storage device managed by a network storage controller). The information can be stored on an attached array of any type of writable media, such as a disk drive, flash memory, and / or any other similar medium adapted to store information. In the example data storage system 200, the information can be stored in data blocks on the disks 224, 226, 228. The storage adapter 241 may include input / output (I / O) interface circuitry that is coupled to the disks over an I / O interconnect arrangement, such as a storage area network (SAN) protocol (e.g., small computer system interface (SCSI), iSCSI, hyperSCSI, Fibre Channel Protocol (FCP)). The information is retrieved by the storage adapter 214 and, if necessary, processed by one or more processors 204 (or the storage adapter 214 itself) before being forwarded over the system bus 242 to the network adapter 210 (and / or, if sent to another node in the cluster, the cluster access adapter 212), where the information is formatted into data packets and returned over the network 216 to the host device 205 (and / or to another node attached to the cluster over the cluster fabric 215).
[0040] In one embodiment, the storage of information on disk arrays 218, 220, 222 can be implemented as one or more storage volumes 230, 232, which are composed of clusters of disks 224, 226, 228, which define the overall logical arrangement of disk space. The disks 224, 226, 228 comprising one or more volumes are typically organized into one or more groups of RAID. As an example, volume 230 includes an aggregate of disk arrays 218 and 220, which includes clusters of disks 224 and 226.
[0041] In one embodiment, to support access to disks 224, 226, 228, operating system 208 may implement a file system (e.g., a write-anywhere file system) that logically organizes information into a hierarchical structure of directories and files on the disks. In this embodiment, respective files may be implemented as a collection of disk blocks configured to store information, and directories may be implemented as specially formatted files in which information about other files and directories is stored.
[0042] Regardless of the underlying physical configuration within this data storage system 200, data may be stored as files within physical and / or virtual volumes, which may be associated with corresponding volume identifiers, such as a file system identifier (FSID) that may be 32 bits long in one example.
[0043] A physical volume corresponds to at least a portion of a physical storage device whose address, addressable space, location, etc. does not change, such as at least some of the one or more data storage devices 234 (e.g., a redundant array of independent (or inexpensive) disks (RAID system)). Typically, the location of a physical volume does not change because the (range of) addresses used to access it generally remains constant.
[0044] In contrast, a virtual volume is stored on an aggregate of disparate portions of different physical storage devices. A virtual volume may be a collection of different available portions of different physical storage device locations, such as some available space from each of disks 224, 226, and / or 228. It will be appreciated that because a virtual volume is not "bound" to any one particular storage device, a virtual volume may be said to include a layer of abstraction or virtualization that allows it to be resized and / or flexible to some degree.
[0045] In addition, the virtual volume may include one or more logical unit numbers (LUNs) 238, directories 236, Qtrees 235, and files 240. For example, these features (more particularly LUNs) allow disparate memory locations in which data is stored to be identified and classified as data storage units, etc. Thus, LUNs 238 may be characterized as constituting a virtual disk or drive on which data within the virtual volume is stored within an aggregate. For example, LUNs are often referred to as virtual drives so that they mimic hard drives from a general-purpose computer, while they actually include blocks of data stored in various portions of the volume.
[0046] In one embodiment, one or more data storage devices 234 may have one or more physical ports, each of which may be assigned a target address (e.g., a SCSI target address). To represent a corresponding volume stored on the data storage device, the target address on the data storage device may be used to identify one or more LUNs 238. Thus, for example, when a node 202 is connected to a volume 230, 232 via a storage adapter 214, a connection between the node 202 and one or more LUNs 238 under the volume is created.
[0047] In one embodiment, the corresponding target address may identify multiple LUNs, such that the target address may represent multiple volumes. An I / O interface (e.g., which may be implemented as circuitry and / or software in storage adapter 214, or as executable code resident in memory 206 and executed by processor 204) may connect to volume 230 using one or more addresses identifying one or more LUNs 238.
[0048] It is understood that the replay of metadata and data operations can be implemented for the data storage system 200. In one example, the node 202 can perform operations on the NVRAM and replay these operations to flush the NVRAM to the storage device. It is understood that the replay of metadata and data operations can be implemented for any type of computing environment and / or between them, and can be transferable between physical devices (e.g., nodes 202, host devices 205, desktop computers, tablet computers, laptops, wearable devices, mobile devices, storage devices, servers, etc.) and / or cloud computing environments (e.g., remote from the node 202 and / or host device 205).
[0049] One embodiment of replaying metadata and data operations is represented by Figure 3 An exemplary method 300 of the present invention is illustrated. A first computing environment (e.g., a client device, a server, a cloud computing environment, etc.) can process data operations to read data from objects (such as files, LUNs, and other storage objects) and write data to objects. The first computing environment can also process metadata operations, such as operations to create objects, rename objects, delete objects, set properties for objects, and / or perform other operations on objects (such as files, directories, inodes, LUNs, volumes, etc.). The first computing environment can include a first file system that stores data in volumes or other data containers, and the first file system performs operations accordingly.
[0050] At 302, execution of metadata operations is tracked to identify a set of objects modified by the execution of metadata operations. A set of objects may include files and / or directory index nodes modified by the metadata operations. In one example, execution of a create object metadata operation is tracked to determine that the create object metadata operation modifies a parent directory object as well as a new object (the new object is created within the parent directory object by the create object metadata operation). Thus, a set of objects is identified as including the parent directory object and the new object.
[0051] In another example, the execution of a linked object metadata operation is tracked to determine that the linked object metadata operation modifies an index node object (a new link to the index node object will be established), and a new parent directory that hosts the new link. Therefore, the group of objects is identified as including the index node object and the new parent directory. In another example, an unlinked object metadata operation is tracked to determine that the unlinked object metadata operation modifies an index node object (a link is removed from the index node object) and a parent directory that once hosted the link. Therefore, the group of objects is identified as including the index node object and the parent directory.
[0052] In another example, the execution of the rename metadata operation is tracked to determine that the rename metadata operation modifies a first directory (in which the renamed file was stored), a second directory (in which the renamed file will be stored), and a file. Thus, the set of objects is identified as including the first directory, the second directory, and the file. If the second directory includes a second file having the same name as the file to be stored in the second directory, the tracking of the execution of the rename metadata operation will determine that the second file will be modified because the rename metadata operation overwrites the second file with the first file. Thus, the set of objects may also include the second file.
[0053] In another example, execution of a set attribute metadata operation is tracked to determine that the set attribute metadata operation modifies an object whose attributes (e.g., size, ownership information, etc.) are set by the set attribute metadata operation. Thus, a group of objects is identified as including the object. In this manner, execution of metadata operations is tracked to determine which objects are changed by execution of such metadata operations.
[0054] At 304, a set of identifiers for a set of objects are stored in association with the metadata operation. The set of identifiers may include a file identifier, a directory identifier, and a volume identifier. In one example, the set of identifiers is stored in a data structure. In another example, the set of identifiers is stored within a message for the metadata operation, such as a scratch area in a message payload (e.g., a message may include the metadata operation and the scratch area, which may be stored within the NVLog for later replay, or transmitted to a second computing device for replay as part of a replication scheme).
[0055] In one example of metadata operation execution, the metadata operation is performed by a metafile system of a first computing environment, such as on data within a source volume. The first computing environment may have a replication relationship with a second computing environment (e.g., a second client device, a second server, a different computer within a cloud environment or a different cloud environment, etc.). For example, the data of the source volume may be replicated to a destination volume hosted by the second computing environment. Replication may occur by replicating incoming operations that are performed locally on the source volume by the source file system, and transmitting the replicated operations to the second computing environment for replay (e.g., execution) on the destination volume by the destination file system of the second computing environment. In this manner, source data operations may be transmitted to the second computing environment for replay on the destination volume, such as for execution by a fast switching engine that provides semi-synchronous replication.
[0056] In another example of metadata operation execution, metadata operations can be performed on data in NVRAM or other types of caches and logged in the node's NVLog. NVLog is used to track the execution of operations that have not been flushed to persistent storage in order to be flushed to disk drives, but instead are executed in NVRAM as part of the caching technology. When a replay triggering event occurs (e.g., node panic, node is taken over by a high availability partner node, node boots up, etc.), the operations tracked in NVLog are replayed.
[0057] At 306, it is determined that the metadata operation is to be replayed against the target file system. In one example where the metadata operation is logged to the NVLog and executed against the NVRAM, it is determined based on the occurrence of a replay trigger event to replay the metadata operation from the NVLog to flush the contents of the NVRAM to the storage device. The replay trigger event corresponds to a post-panic NVLog replay of a node, such as when a high availability partner node takes over or a node restarts after a panic.
[0058] In another example, where a metadata operation is performed on a source volume hosted by a first computing system and is replicated to a second computing environment for replay (execution) on a destination volume, replay of the metadata operation is triggered based on various trigger conditions. For example, receipt of the metadata operation by the second computing environment triggers replay of the metadata operation. In another example, the replicated operation may be queued into a replication queue, such as by a replication switching engine that implements semi-synchronous replication for the second computing environment. The operation may be dequeued from the replication queue and replayed.
[0059] At 308, the tracking data structure is queried using a set of identifiers of a set of objects that have been modified by the initial execution of the metadata operation to determine whether the metadata operation is independent or dependent relative to the pending operation that has been dispatched to the target file system for execution (replay). The tracking data structure is used to track identifiers of objects that will be modified by the scheduled operations, which are dispatched to the target file system for replay (execution), such as from NVLog or a replication queue. If a set of identifiers does not match any identifier within the tracking data structure, the metadata operation is independent of the pending operation that has been dispatched to the target file system, and therefore will not modify the object modified by the pending operation. Accordingly, at 310, the metadata operation is dispatched to the target file system for replay. In this way, the metadata operation can be executed in parallel with the pending operation without waiting for the pending operation to complete first. By executing the metadata operation in parallel with other operations, this significantly improves the speed of replay and the utilization of resources. When the metadata operation is dispatched to the target file system, a set of identifiers is filled into the tracking data structure to indicate that a set of objects will be modified by the metadata operation.
[0060] If at least one identifier within the set of identifiers matches at least one identifier within the tracking data structure, the metadata operation is dependent on one or more pending operations that have been scheduled to the target file system and will therefore modify at least one object that will be modified by the one or more pending operations. Accordingly, at 312, replay of the metadata operation is withheld. In one example, the metadata operation can be requeued and evaluated at a later time, such as after a threshold amount of time, to find out whether the metadata operation can be replayed. In another example, the metadata operation is serially scheduled to the target file system for replay after the pending operations have completed. In this way, the destination volume will be consistent with the source volume because the objects are modified in the destination volume in the same order in which they were modified in the source volume.
[0061] Similarly, data operations can be replayed in parallel or serially relative to pending operations that have been scheduled to the target file system. For example, it is determined that the data operation will be replayed for the target file system (for example, the data operation can be logged in NVLog and must be replayed from NVLog to the storage device, or can be queued in the replication queue for execution on the destination volume). The data operation is evaluated to identify the object (for example, the file being written) that will be modified by the replay of the data operation. The tracking data structure is queried using the identifier of the object. If the identifier does not match any identifier in the tracking data structure, the data operation is scheduled to the target file system for replay. The tracking data structure is filled with an identifier to indicate that the object will be modified by the data operation scheduled to the target file system for replay. For example, after the pending scheduled operation is completed, the data operation is scheduled to the target file system for execution in series.
[0062] In one example, where a set of operations are to be replayed against a target file system, identifiers and tracking data structures of objects modified by the set of operations during initial execution (e.g., execution in NVRAM or on a source volume) are used to identify operations that are dependent on each other and operations that are independent of each other. In this manner, dependent operations are scheduled to the target file system for serial execution in the order in which the dependent operations were initially executed. The order of execution can be preserved using sequence numbers that were assigned to each operation during the initial operation to indicate the order in which each operation was executed. Independent operations are scheduled to the target file system for parallel execution.
[0063] Figure 4 A system 400 for replaying metadata and data operations is illustrated. A computing device may include NVRAM 402 for caching, such as a cache for modification operations. In particular, operations (such as write operations, metadata operations, and / or other types of modification operations) are cached in NVRAM 402 and logged in NVLog. In this way, operations are initially performed on NVRAM 402. When a replay triggering event (e.g., a node restart after a system emergency, or a high availability partner node taking over a node due to a system emergency) occurs, the cached operations are replayed to a storage device (e.g., flushed to a persistent storage device).
[0064] In one example of initially performing (e.g., caching) operations, a first operation 404 is received and executed on NVRAM 402 to create a file (1) in a directory (1). The execution of the first operation 404 is tracked to determine that the file (1) and the directory (1) are modified by the execution of the first operation 404. Accordingly, a first set of identifiers 406 is stored in association with the first operation 404, the first set of identifiers 406 including the file (1) identifier and the directory (1) identifier. A second operation 408 is received and executed on NVRAM 402 to adjust the size of a file (2) stored in a directory (2). The execution of the second operation 408 is tracked to determine that the file (2) and the directory (2) are modified by the execution of the second operation 408. Accordingly, a second set of identifiers 410 is stored in association with the second operation 408, the second set of identifiers 410 including the file (2) identifier and the directory (2) identifier.
[0065] A third operation 412 is received and executed on the NVRAM 402 to create a file (3) in the directory (3). The execution of the third operation 412 is tracked to determine that the file (3) and the directory (3) are modified by the execution of the third operation 412. Accordingly, a third group identifier 406 is stored in association with the third operation 412, the third group identifier 406 including the file (3) identifier and the directory (3) identifier. A fourth operation 416 is received and executed on the NVRAM 402 to write data to the file (1) within the directory (1). The execution of the fourth operation 416 is tracked to determine that the file (1) and the directory (1) are modified by the execution of the fourth operation 416. Accordingly, a fourth group identifier 418 is stored in association with the fourth operation 416, the fourth group identifier 418 including the file (1) identifier and the directory (1) identifier.
[0066] A fifth operation 420 to write data to a file (3) within a directory (3) is received and executed on the NVRAM 402. The execution of the fifth operation 420 is tracked to determine that the file (3) and the directory (3) are modified by the execution of the fifth operation 420. Accordingly, a fifth group identifier 422 is stored in association with the fifth operation 420, the fifth group identifier 422 including the file (3) identifier and the directory (3) identifier. A sixth operation 424 to write data to a resized file (2) within the directory (2) is received and executed on the NVRAM 402. The execution of the sixth operation 424 is tracked to determine that the file (2) and the directory (2) are modified by the execution of the sixth operation 424. Accordingly, a sixth group identifier 426 is stored in association with the sixth operation 424, the sixth group identifier 426 including the file (2) identifier and the directory (2) identifier.
[0067] During the replay of operations by the target file system 428 to flush the NVRAM 402 to the storage device 430, a set of identifiers are evaluated to determine which operations can be replayed / executed in parallel and which operations will be replayed / executed serially relative to each other. For example, the first operation 404, the second operation 408, and the third operation 412 are independent of each other because there is no overlap between the objects that will be modified by the first operation 404, the second operation 408, and the third operation 412. Accordingly, the first operation 404, the second operation 408, and the third operation 412 can be replayed in parallel relative to each other.
[0068] The fourth operation 416 is dependent on the first operation 404, and thus the fourth operation 416 will be rejected from replay until the first operation 404 is completed because the first operation 404 must first create file (1) before file (1) can be written by the fourth operation 416. The sixth operation 424 is dependent on the second operation 408, and thus the sixth operation 424 will be rejected from replay until the second operation 408 is completed because the second operation 408 must first resize file (2) before the sixth operation 424 can write the resized file (2). The fifth operation 420 is dependent on the third operation 412, and thus the fifth operation 420 will be rejected from replay until the third operation 412 is completed because the third operation 412 must first create file (3) before file (3) can be written by the fifth operation 420. The fourth operation 416, the fifth operation 420, and the sixth operation 424 are independent of each other because there is no overlap between the objects that will be modified by the fourth operation 416, the fifth operation 420, and the sixth operation 424. Accordingly, the fourth operation 416, the fifth operation 420, and the sixth operation 424 can be replayed in parallel with respect to each other. In this manner, the operations are scheduled to the target file system 428 in a manner that preserves the order in which the objects were modified when the operations were initially performed on the NVRAM 402. In this manner, the state of the storage device 430 (e.g., what data is stored, the directory structure, the name of the object, etc.) is consistent with the state of the NVRAM 402.
[0069] Figure 5 An example of a system 500 for replaying metadata and data operations is illustrated. A first computing device 526 can have a replication relationship (e.g., a semi-synchronous replication relationship, a synchronous replication relationship, etc.) with a second computing device 530. For example, data of a source volume hosted by the first computing device 526 can be replicated to a destination volume hosted by the second computing device 530 by replicating incoming operations executed on the source volume to the second computing device 530 for execution by the target file system 524 on the destination volume.
[0070] In one example, a create object operation 504 is performed by a first computing device 526 on a source volume. The execution is tracked to identify a set of identifiers (1) 506 of objects modified by the execution of the create object operation 504. A link object operation 508 is performed by the first computing device 526 on the source volume. The execution is tracked to identify a set of identifiers (2) 510 of objects modified by the execution of the link object operation 508. An unlink object operation 512 is performed by the first computing device 526 on the source volume. The execution is tracked to identify a set of identifiers (3) 514 of objects modified by the execution of the unlink object operation 512. A rename operation 516 is performed by the first computing device 526 on the source volume. The execution is tracked to identify a set of identifiers (4) 518 of objects modified by the execution of the rename operation 516. A set object attribute operation 520 is performed by the first computing device 526 on the source volume. The execution is tracked to identify a set of identifiers (5) 522 of objects modified by the execution of the set attribute operation 520.
[0071] The first computing device 526 copies the operations and transmits 528 the copied operations and a set of identifiers to the second computing device 530 for replay by the target file system 524. The set of identifiers are evaluated to determine which operations can be replayed in parallel with respect to each other, and which operations will be replayed serially with respect to each other (to determine which operations depend on other operations being completed first). In this way, some operations can be scheduled to the target file system 524 for parallel execution, while other operations can be scheduled to the target file system 524 for serial execution.
[0072] Yet another embodiment relates to a computer-readable medium including processor-executable instructions configured to implement one or more of the techniques presented herein. An example embodiment of a computer-readable medium or computer-readable device contemplated in these ways is provided in Figure 6 , where implementation 600 includes a computer readable medium 608, such as a recordable compact disc (CD-R), a recordable digital versatile disc (DVD-R), a flash drive, a hard drive disk, etc., encoded with computer readable data 606. The computer readable data 606 (such as binary data including at least one of 0 or 1) in turn includes processor executable computer instructions 604, which are configured to operate according to one or more principles set forth herein. In some embodiments, the processor executable computer instructions 604 are configured to perform method 602, such as, for example, Figure 3 At least some of the exemplary method 300 of the present invention. In some embodiments, the processor executable computer instructions 604 are configured to implement a system, such as Figure 4 At least some of the exemplary system 400 and / or Figure 5Many such computer-readable media are contemplated to operate in accordance with the techniques presented herein.
[0073] Figure 7 is a schematic diagram of an example operating environment 700 in which an embodiment of the techniques described herein may be implemented. In one example, the techniques described herein may be implemented within a client device 728, such as a laptop, tablet, personal computer, mobile device, wearable device, etc. In another example, the techniques described herein may be implemented within a storage controller 730, such as a node configured to manage storage and access to data on behalf of the client device 728 and / or other client devices. In another example, the techniques described herein may be implemented within a distributed computing platform 702, such as a cloud computing environment (e.g., a cloud storage environment, a multi-tenant platform, etc.) configured to manage storage and access to data on behalf of the client device 728 and / or other client devices.
[0074] In yet another example, at least some of the techniques described herein are implemented across one or more of the client device 728, the storage controller 730, and the distributed computing platform 702. For example, the client device 728 may transmit operations such as data operations to read data and write data and metadata operations (e.g., create file operations, rename directory operations, resize operations, set attribute operations, etc.) to the storage controller 730 over the network 726 for implementation by the storage controller 730 on the storage device. The storage controller 730 may store data associated with the operations in volumes or other data objects / structures hosted in locally attached storage devices, remote storage devices hosted by other computing devices accessible via the network 726, storage devices provided by the distributed computing platform 702, and the like. The storage controller 730 may replicate the data and / or operations to other computing devices so that one or more replicas (such as a destination storage volume maintained as a replica of a source storage volume) are maintained. Such replicas may be used for disaster recovery and failover.
[0075] By transferring the data to the distributed computing platform 702, the storage controller 730 can store the data or a portion thereof within a storage device hosted by the distributed computing platform 702. In one example, the storage controller 730 can store frequently accessed data locally in a locally attached storage device. Less frequently accessed data can be transferred to the distributed computing platform 702 for storage within the data storage layer 708. The data storage layer 708 can store data within the service data repository 720, and can store client-specific data within client data repositories assigned to these clients, such as the client (1) data repository 722 for storing data for client (1), and the client (N) data repository 724 for storing data for client (N). The data repository can be a physical storage device, or can be defined as a logical storage device, such as a virtual volume, LUN, or other logical organization of data that can be defined across one or more physical storage devices. In another example, the storage controller 730 transfers and stores all client data to the distributed computing platform 702. In yet another example, the client device 728 transmits and stores data directly to the distributed computing platform 702 without the use of the storage controller 730 .
[0076] Management of storage and access to data may be performed by one or more storage virtual machines (SMVs) or other storage applications that provide software as a service (SaaS), such as storage software services. In one example, the SVMs may be hosted within the client device 728, within the storage controller 730, or within the distributed computing platform 702 (such as through the application server layer 706). In another example, one or more SVMs may be hosted across one or more of the client device 728, the storage controller 730, and the distributed computing platform 702.
[0077] In one example of the distributed computing platform 702, one or more SVMs may be hosted by the application server layer 706. For example, the server (1) 716 is configured to host SVMs for executing applications, such as storage applications, that manage the storage of data of the client (1) within the client (1) data repository 722. Thus, the SVMs executing on the server (1) 716 may receive data and / or operations from the client device 728 and / or the storage controller 730 over the network 726. The SVMs execute the storage applications to process the operations and / or store the data within the client (1) data repository 722. The SVMs may transmit responses back to the client device 728 and / or the storage controller 730 over the network 726, such as success messages or error messages. In this manner, the application server layer 706 may host SVMs, services, and / or other storage applications that use the server (1) 716, the server (N) 718, and the like.
[0078] The user interface layer 704 of the distributed computing platform 702 can provide the client device 728 and / or the storage controller 730 with access to user interfaces associated with the storage and access of data and / or other services provided by the distributed computing platform 702. In one example, the service user interface 710 can be accessible from the distributed computing platform 702 for accessing services subscribed by the client and / or the storage controller, such as data replication services, application hosting services, data security services, human resources services, warehouse tracking services, billing services, etc. For example, the client user interface can be provided to the corresponding client, such as the client (1) user interface 712, the client (N) user interface 714, etc. The client (1) can access various services and resources subscribed by the client (1) through the client (1) user interface 712, such as access to web services, development environments, human resources applications, warehouse tracking applications, and / or other services and applications provided by the application server layer 706, and the application server layer 706 can use the data stored in the data storage layer 708.
[0079] The client device 728 and / or the storage controller 730 may subscribe to certain types and amounts of services and resources provided by the distributed computing platform 702. For example, the client device 728 may establish a subscription to have access to three virtual machines, a certain amount of storage, a certain type / amount of data redundancy, a certain type / amount of data security, certain service level agreements (SLAs) and service level objectives (SLOs), latency guarantees, bandwidth guarantees, access to execute or host certain applications, etc. Similarly, the storage controller 730 may establish a subscription to have access to certain services and resources of the distributed computing platform 702.
[0080] As shown, various clients (such as client device 728 and storage controller 730) incorporated into various computing devices and / or incorporated therein may communicate with distributed computing platform 702 over one or more networks (such as network 726). For example, a client may incorporate or be incorporated into a client application (e.g., software) that is at least partially implemented by one or more of the computing devices.
[0081] Examples of suitable computing devices include personal computers, server computers, desktop computers, nodes, storage servers, storage controllers, laptop computers, notebook computers, tablet computers or personal electronic assistants (PDAs), smart phones, cellular phones, and consumer electronic devices incorporating one or more computing device components (such as one or more electronic processors, microprocessors, central processing units (CPUs), or controllers). Examples of suitable networks include networks utilizing wired and / or wireless communication technologies and networks operating according to any suitable networking and / or communication protocols (e.g., the Internet). In the use case involving the delivery of customer support services, the labeled computing devices represent the endpoints of the customer support delivery process, i.e., the consumer's devices.
[0082] The distributed computing platform 702 (such as a multi-tenant business data processing platform or a cloud computing environment) may include multiple processing layers, including a user interface layer 704, an application server layer 706, and a data storage layer 708. The user interface layer 704 may maintain multiple user interfaces, including graphical user interfaces and / or web-based interfaces. The user interface may include a service user interface 710 for a service to provide access to applications and data for a client (e.g., a "tenant") of the service, and one or more user interfaces that have been specialized / customized according to user-specific requirements, which may be accessed via one or more APIs.
[0083] The service user interface 710 may include components that enable a tenant to manage the tenant's participation in the functions and capabilities provided by the distributed computing platform 702, such as accessing data, causing the execution of specific data processing operations, etc. Each processing layer may use a set of computers, a virtualized computing environment (such as a storage virtual machine or storage virtual server), and / or a computer component including a computer server and a processor, and may perform various functions, methods, processes, or operations as determined by the execution of a software application or instruction set.
[0084] The data storage layer 708 may include one or more data repositories, which may include a service data repository 720 and one or more client data repositories. Each client repository may contain tenant-specific data, which is used to provide tenant-specific business and storage services or functions (including but not limited to ERP, CRM, e-commerce, human resource management, payroll, storage services, etc.). The data repository may be implemented with any suitable data storage technology, including a relational database management system (RDBMS) based on structured query language (SQL), a file system hosted by an operating system, object storage, etc.
[0085] According to an embodiment of the present invention, the distributed computing platform 702 can be a multi-tenant and service platform operated by an entity to provide a set of business-related applications, data storage, and functionality to multiple tenants. These applications and functionality may include those applications and functionality that a business uses to manage various aspects of its operation. For example, the applications and functionality may include providing web-based access to a business information system, thereby allowing users with a browser and an Internet or intranet connection to view, enter, process, or modify certain types of business information or any other type of information.
[0086] In another embodiment, the described methods and / or their equivalents may be implemented with computer executable instructions. Thus, in one embodiment, a non-transitory computer readable / storage medium is configured with stored computer executable instructions having an algorithm / executable application, which, when executed by a (multiple) machine, causes the (multiple) machine (and / or associated components) to perform a method. Example machines include, but are not limited to, processors, computers, servers operating in a cloud computing system, servers configured in a software as a service (SaaS) architecture, smart phones, etc. In one embodiment, a computing device is implemented with one or more executable algorithms configured to perform any of the disclosed methods.
[0087] It will be understood that the processes, architectures, and / or processes described herein may be implemented in hardware, firmware, and / or software. It will also be understood that the terms set forth herein may apply to any type of special-purpose computer (e.g., a file host, storage server, and / or storage service equipment) and / or general-purpose computer, including stand-alone computers or portions thereof, embodied as or including a storage system. In addition, the teachings herein may be configured to a variety of storage system architectures, including, but not limited to, network-attached storage environments and / or storage area networks and disk assemblies directly attached to a client or host computer. A storage system should therefore be broadly understood to include these arrangements in addition to any subsystems configured to perform storage functions and associated with other devices or systems.
[0088] In some embodiments, the method described and / or illustrated in the present disclosure can be implemented in whole or in part on a computer-readable medium. A computer-readable medium may include computer-readable instructions configured to implement one or more of the methods presented herein, and may include any mechanism for storing the data, which may be read by a computer system thereafter. Examples of computer-readable media include (hard disk) drives (e.g., accessible via network attached storage (NAS)), storage area networks (SANs), volatile and non-volatile memories (such as read-only memories (ROMs), random access memories (RAMs), electrically erasable programmable read-only memories (EEPROMs) and / or flash memories), compact disk read-only memories (CD-ROMs), CD-Rs, rewritable compact disks (CD-RWs), DVDs, cassettes, magnetic tapes, magnetic disk storage devices, optical or non-optical data storage devices, and / or any other medium that may be used to store data.
[0089] Although the subject matter has been described in language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing at least some of the claims.
[0090] Various operations of the embodiments are provided herein. The order in which some or all of these operations are described should not be interpreted as implying that these operations must rely on the order. Given the benefit of this description, alternative sequencing will be understood. In addition, it will be understood that not all operations must appear in each embodiment provided herein. Equally, it will be understood that in some embodiments, not all operations are necessary.
[0091] In addition, the claimed subject matter is implemented as a method, apparatus, or article of manufacture to control a computer to implement the disclosed subject matter using standard application or engineering techniques for production software, firmware, hardware, or any combination thereof. The term "article of manufacture" as used herein is intended to include a computer application accessible from any computer-readable device, carrier, or medium. Of course, many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
[0092] The terms "component", "module", "system", "interface", etc. used in this application are generally intended to refer to an entity related to a computer, or hardware, a combination of hardware and software, software, or software in execution. For example, a component includes a process running on a processor, a processor, an object, an executable file, an execution thread, an application, or a computer. By way of illustration, both an application running on a controller and a controller can be a component. One or more components residing in a process or execution thread and a component can be located on one computer or distributed between two or more computers.
[0093] In addition, "exemplary" is used herein to mean used as an example, instance, illustration, etc., and is not necessarily beneficial. The "or" used in this application is intended to mean an inclusive "or" rather than an exclusive "or". In addition, unless otherwise specified or the context clearly points to a singular form, "a" and "an" are generally interpreted as meaning "one or more". Similarly, at least one of A and B, etc. generally means A or B, and / or both A and B. In addition, with respect to the use of "include", "having", "has", "with" or variations thereof, such terms are intended to be inclusive, in a manner similar to the term "comprising".
[0094] Many modifications may be made to the present disclosure without departing from the scope or spirit of the claimed subject matter. Unless otherwise specified, "first," "second," etc. are not intended to imply a temporal aspect, a spatial aspect, or an order, etc. Rather, such terms are used only as identifiers, names, etc. for features, elements, items, etc. For example, a first set of information and a second set of information generally correspond to a set A of information and a set B of information, or two different sets of information or two identical sets, or a set of the same information.
[0095] Likewise, although the present disclosure has been shown and described with respect to one or more implementations, other persons skilled in the art may conceive of equivalent changes and modifications based on a reading and understanding of the specification and the accompanying drawings. The present disclosure includes all such modifications and changes and is limited only by the scope of the claims below. In particular, with respect to the various functions performed by the components (e.g., elements, resources, etc.) described above, unless otherwise indicated, the terms used to describe such components are intended to correspond to components that perform the specified functions (e.g., functionally equivalent) of the described components, even if they are not structurally equivalent to the disclosed structures. In addition, although specific features of the present disclosure have been disclosed with respect to only one of a plurality of implementations, such features may be combined with one or more other features of other implementations as may be desired and beneficial for any given or particular application.
Claims
1. A method for replaying metadata and data operations, comprising: a first identifier of a tracking object, the object being modified by the performance of the metadata operation; responsive to determining that the metadata operation is to be replayed against a target file system, querying a tracking data structure using the first identifier, the tracking data structure for tracking a plurality of identifiers of a plurality of objects waiting to be modified by a pending operation scheduled to the target file system; responsive to the first identifier not being present within the tracking data structure, scheduling the metadata operation to the target file system for replay; as well as In response to the first identifier appearing within the tracking data structure, denying scheduling of the metadata operation to the target file system for replay until the tracking data structure no longer includes the first identifier, wherein the metadata operation is re-queued for re-evaluation after a threshold amount of time to find out whether the metadata operation can be scheduled for replay.
2. The method according to claim 1, comprising: In response to dispatching the metadata operation, the tracking data structure is populated with the first identifier to indicate that the object is awaiting modification by the metadata operation dispatched to the target file system for replay.
3. The method according to claim 1, comprising: Based on the second identifier of the second object targeted by the data operation not appearing in the tracking data structure, the data operation is scheduled to the target file system for replay; otherwise, based on the second identifier appearing in the tracking data structure, the scheduling of the data operation to the target file system for replay is denied.
4. The method according to claim 3, comprising: In response to scheduling the data operation, populating the second identifier into the tracking data structure to indicate that the second object is awaiting modification by the data operation scheduled to the target file system for replay.
5. The method according to claim 1, comprising: Using multiple identifiers of multiple objects modified by a set of operations during initial execution and the tracking data structure, dependent operations within the set of operations are identified: the dependent operations are dependent on each other based on that the dependent operations modify the same multiple objects, and the dependent operations are serially scheduled to the target file system for serial execution.
6. The method according to claim 1, comprising: Using multiple identifiers of multiple objects modified by a set of operations during initial execution and the tracking data structure, independent operations within the set of operations are identified: the independent operations are independent of each other based on that the independent operations do not modify the same multiple objects, and the independent operations are scheduled to the target file system for parallel execution.
7. The method of claim 1, wherein the first identifier comprises at least one of: a file identifier of a file, or a directory identifier of a directory. The method of claim 1 , wherein the first identifier comprises an inode number of an object.
9. The method according to claim 1, wherein the object comprises at least one of the following: a file or a directory.
10. A non-transitory machine-readable medium comprising instructions for executing a method for replaying metadata and data operations, the instructions, when executed by a machine, causing the machine to: a first identifier of a tracking object, the object being modified by the performance of the metadata operation; responsive to determining that the metadata operation is to be replayed against a target file system, querying a tracking data structure using the first identifier, the tracking data structure for tracking a plurality of identifiers of a plurality of objects waiting to be modified by a pending operation scheduled to the target file system; responsive to the first identifier not being present within the tracking data structure, scheduling the metadata operation to the target file system for replay; as well as In response to the first identifier appearing within the tracking data structure, denying scheduling of the metadata operation to the target file system for replay until the tracking data structure no longer includes the first identifier, wherein the metadata operation is re-queued for re-evaluation after a threshold amount of time to find out whether the metadata operation can be scheduled for replay.
11. The non-transitory machine-readable medium of claim 10, wherein the instructions cause the machine to: Execution of the metadata operation on a source file system of a first computing environment and replay execution of the metadata operation on the target file system of a second computing environment as a copy of the metadata operation are supported.
12. The non-transitory machine-readable medium of claim 11, wherein the target file system is a semi-synchronous replication target for the source file system, wherein operations performed at the source file system are replicated to the target file system for replay at the target file system.
13. The non-transitory machine-readable medium of claim 10, wherein the instructions cause the machine to: Supporting execution of the metadata operation within a non-volatile memory NVRAM, wherein the execution is tracked using a non-volatile log NVLog, the NVLog being used to track operations executed within the NVRAM and not yet flushed to a storage device, and wherein the metadata operation is scheduled to the target file system during a replay of the NVLog that flushes the contents of the NVRAM to the storage device.
14. The non-transitory machine-readable medium of claim 10, wherein the metadata operation comprises a create object metadata operation, and wherein the instructions cause the machine to: Execution of the create object metadata operation is tracked to determine that the create object metadata operation modifies a parent directory object and that a new object is created by the create object metadata operation within the parent directory object.
15. The non-transitory machine-readable medium of claim 10, wherein the metadata operation comprises a link object metadata operation, and wherein the instructions cause the machine to: Execution of the link object metadata operation is tracked to determine that the link object metadata operation modifies an index node object to which a new link is to be established and a new parent directory hosting the new link.
16. An apparatus for replaying metadata and data operations, comprising: a memory including machine executable code on which instructions for performing a method are stored; as well as a processor coupled to the memory, the processor being configured to execute the machine executable code so that the processor: a first identifier of a tracking object, the object being modified by the performance of the metadata operation; responsive to determining that the metadata operation is to be replayed against a target file system, querying a tracking data structure using the first identifier, the tracking data structure for tracking a plurality of identifiers of a plurality of objects waiting to be modified by a pending operation scheduled to the target file system; responsive to the first identifier not being present within the tracking data structure, scheduling the metadata operation to the target file system for replay; as well as In response to the first identifier appearing within the tracking data structure, denying scheduling of the metadata operation to the target file system for replay until the tracking data structure no longer includes the first identifier, wherein the metadata operation is re-queued for re-evaluation after a threshold amount of time to find out whether the metadata operation can be scheduled for replay.
17. The apparatus of claim 16, wherein the metadata operations comprise unlinked object metadata operations, and wherein the machine executable code causes the processor to: Execution of the unlinked object metadata operation is tracked to determine that the unlinked object metadata operation modifies the inode object from which the link is removed and the parent directory that hosted the link.
18. The apparatus of claim 16, wherein the metadata operation comprises a rename metadata operation, and wherein the machine executable code causes the processor to: Execution of the rename metadata operation is tracked to determine that the rename metadata operation modifies a first directory in which a renamed file was stored, a second directory in which the renamed file is to be stored, and the file.
19. The apparatus of claim 18, wherein the machine executable code causes the processor to: Execution of the rename metadata operation is tracked to determine that the rename metadata operation modifies a second file within the second directory that has the same name as the file, wherein the rename metadata operation overwrites the second file with the file.
20. The apparatus of claim 16, wherein the metadata operation comprises a set attribute metadata operation, and wherein the machine executable code causes the processor to: Execution of the set property metadata operation is tracked to determine that the set property metadata operation modifies an object whose property is set by the set property metadata operation.
Citation Information
Patent Citations
Fine grain synchronization for database replay
CN102236705A
Transparent failover
CN103636165A