Remote cloning of files in distributed file systems
Abstract
Approaches and mechanisms for cloning a file are described. A first node requests a clone of a file at a time when it also requests an exclusive delegation of the original file from a second node where the original file is stored. The second node marks the original file as delegated to the first node and the second node records an intent to create the clone file and a delegation record for the clone file. The second node creates the clone file. The delegation of and the identity of the clone file are returned to the first node. The first node marks in the delegation record that the clone file was committed in response to modification. If the clone file was committed the delegation is cleared and the clone file is kept, and if the clone file was not committed, the delegation is cleared, and the clone file is deleted.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A node in a distributed storage system having plurality of interconnected nodes, the node comprising:
network interfaces to allow communication to and from remote nodes in the plurality of interconnected nodes;
a memory device to store instructions;
a processor coupled with the memory device and with the network interfaces, the processor to execute instructions stored in the memory device including instructions that cause the processor to:
receive a clone request from a remote node, the clone request for a clone of a file stored on the node;
perform one or more preparatory operations prior to granting a file delegation for the file to the remote node;
mark the file as delegated to the remote node;
generate the clone of the file;
transmit, to the remote node, delegation information corresponding to the file and identity information corresponding to the clone of the file;
initiate processing to release the delegation of the file in response to a release trigger;
clear the delegation of the file to the remote node;
keep the clone file if the clone file has been committed; and
delete the clone file if the clone file has not been committed.
2. The node of claim 1 wherein the distributed storage system utilizes a block-based format having fixed-size blocks and index nodes (inodes) to identify files and file attributes.
3. The node of claim 2 wherein the distributed storage system utilizes a redirection layer that comprises at least a directory that points to a catalog inode that includes an inode database that operates as a multipart catalog that lists a plurality of child inodes that each store components of the file.
4. The node of claim 3 wherein the clone of the file comprises data from multiple child inodes in the plurality of child inodes.
5. The node of claim 1 further comprising deleting the clone file and state information associated with the clone file, if any, in response to an indication that generation of the clone file was not completely successful.
6. The node of claim 1 wherein the distributed storage system is a container-based system in which each node exists within a corresponding container.
7. The node of claim 1 wherein the remote node atomically marks the clone file as committed and performs an operation having a dependency on the clone file.
8. A non-transitory computer readable storage medium having stored thereon instructions that, when executed by one or more processors, cause the one or more processors to:
receive a clone request from a remote node, the clone request for a clone of a file stored on a selected node;
perform one or more preparatory operations prior to granting a file delegation for the file to the remote node;
mark the file as delegated to the remote node;
generate the clone of the file;
transmit, to the remote node, delegation information corresponding to the file and identity information corresponding to the clone of the file;
initiate processing to release the delegation of the file in response to a release trigger;
clear the delegation of the file to the remote node;
keep the clone file if the clone file has been committed; and
delete the clone file if the clone file has not been committed.
9. The non-transitory computer readable storage medium of claim 8 wherein a distributed storage system comprising at least the remote node and the selected node utilizes a block-based format having fixed-size blocks and index nodes (inodes) to identify files and file attributes.
10. The non-transitory computer readable storage medium of claim 9 wherein the distributed storage system that a redirection layer that comprises at least a directory that points to a catalog inode that includes an inode database that operates as a multipart catalog that lists a plurality of child inodes that each store components of the file.
11. The non-transitory computer readable storage medium of claim 10 wherein the clone of the file comprises data from multiple child inodes in the plurality of child inodes.
12. The non-transitory computer readable storage medium of claim 8 further comprising instructions that, when executed, cause the one or more processors to delete the clone file and state information associated with the clone file, if any, in response to an indication that generation of the clone file was not completely successful.
13. The non-transitory computer readable storage medium of claim 8 wherein a distributed storage system comprising at least the remote node and the selected node is a container-based system in which each node exists within a corresponding container.
14. The non-transitory computer readable storage medium of claim 8 further comprising instructions that, when executed, cause the one or more processors to cause the remote node to atomically mark the clone file as committed and performs an operation having a dependency on the clone file.
15. A method for managing a node in a distributed storage system having plurality of interconnected nodes, the method comprising:
receiving a clone request from a remote node, the clone request for a clone of a file stored on the node;
performing one or more preparatory operations prior to granting a file delegation for the file to the remote node;
marking the file as delegated to the remote node;
generating the clone of the file;
transmitting, to the remote node, delegation information corresponding to the file and identity information corresponding to the clone of the file;
initiating processing to release the delegation of the file in response to a release trigger;
clearing the delegation of the file to the remote node;
keeping the clone file if the clone file has been committed; and
deleting the clone file if the clone file has not been committed.
16. The method of claim 15 wherein the distributed storage system utilizes a block-based format having fixed-size blocks and index nodes (inodes) to identify files and file attributes.
17. The method of claim 15 wherein the remote node is part of the distributed storage system that utilizes a redirection layer that comprises at least a directory that points to a catalog inode that includes an inode database that operates as a multipart catalog that lists a plurality of child inodes that each store components of the file.
18. The method of claim 15 wherein the clone of the file comprises data from multiple child inodes.
19. The method of claim 15 wherein the remote node atomically marks the clone file as committed and performs an operation having a dependency on the clone file.
20. The method of claim 15 wherein the distributed storage system is a container-based system in which each node exists within a corresponding container.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.