Unordered idempotent logical replication operations
First Claim
1. A method of replicating data in a file system, the method comprising:
- creating a current snapshot of a file system stored within a source storage server at a point in time, the source file system configured to store a plurality of data objects, each of which is assigned a corresponding data object identifier;
scanning each data object within the source file system to identify changes in the source file system that have occurred since an earlier replication operation was performed by comparing the current snapshot with a previous snapshot corresponding to the earlier replication operation; and
transferring the changes in the source file system as a plurality of individual data units in a stream to the destination storage server while preserving the corresponding file system object identifiers to replicate the source file system at the destination storage server, wherein an ordering of the individual data units within the stream is independent of a hierarchical structure of the source file system;
wherein the changes in the source file system include updates to a data block of a file containing both modified and unmodified data blocks, wherein for the file, transferring only the modified data blocks to replicate the source file system at a destination storage server, wherein the changes in the source file system include updates to a directory entry of a directory containing both modified and unmodified directory entries, and wherein for the directory, transferring only the modified directory entries to replicate the source file system at the destination storage server;
wherein if the changes are for a directory, the stream of individual data units includes;
an inode number of a directory corresponding to a directory entry being replicated,a generation number of the directory,a name of the file system object referenced by the directory entry,an inode number of the file system object referenced by the directory entry, anda generation number of the file system object referenced by the directory entry.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for replicating a data container of a source storage server at the logical level in an unordered stream of individual data units are described. In certain embodiments, the replication operations can be performed without regard to the differences in geometry of physical persistent storage of the source and destination storage servers and without regard to the differences in data container format of the source and destination storage servers. An initial replication operation of the source data container is performed by transferring the data objects within the source data container to a replica data container in the destination storage server as an unordered stream of individual data units while preserving data object identifiers of the source data objects. Afterwards, incremental replication operations can be performed to capture modifications to the source data container over time after the initial replication operation.
156 Citations
31 Claims
-
1. A method of replicating data in a file system, the method comprising:
-
creating a current snapshot of a file system stored within a source storage server at a point in time, the source file system configured to store a plurality of data objects, each of which is assigned a corresponding data object identifier; scanning each data object within the source file system to identify changes in the source file system that have occurred since an earlier replication operation was performed by comparing the current snapshot with a previous snapshot corresponding to the earlier replication operation; and transferring the changes in the source file system as a plurality of individual data units in a stream to the destination storage server while preserving the corresponding file system object identifiers to replicate the source file system at the destination storage server, wherein an ordering of the individual data units within the stream is independent of a hierarchical structure of the source file system; wherein the changes in the source file system include updates to a data block of a file containing both modified and unmodified data blocks, wherein for the file, transferring only the modified data blocks to replicate the source file system at a destination storage server, wherein the changes in the source file system include updates to a directory entry of a directory containing both modified and unmodified directory entries, and wherein for the directory, transferring only the modified directory entries to replicate the source file system at the destination storage server; wherein if the changes are for a directory, the stream of individual data units includes; an inode number of a directory corresponding to a directory entry being replicated, a generation number of the directory, a name of the file system object referenced by the directory entry, an inode number of the file system object referenced by the directory entry, and a generation number of the file system object referenced by the directory entry. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of replicating data in a file system, the method comprising:
-
receiving, at a destination storage server, a plurality of file system objects in a stream of individual data units from a source storage server, wherein an ordering of the individual data units within the stream is independent of a hierarchical structure of a source file system of the source storage server, the stream containing only the changes that have occurred in the source file system of the source storage server since a previous replication operation was performed, wherein each of the file system objects includes a corresponding file system object identifier, and wherein the changes in the source file system include updates to a data block of a file containing both modified and unmodified data blocks, wherein for the file, receiving only the modified data blocks to replicate the source file system at the destination storage server, wherein the changes in the source file system include updates to a directory entry of a directory containing both modified and unmodified directory entries, and wherein for the directory, receiving only the modified directory entries to replicate the source file system at the destination storage server; replicating the plurality of file system objects at the destination storage server using the file system object identifiers; and creating a current snapshot of the replicated file system of the destination storage server once the plurality of file system objects are replicated at the destination so that corresponding snapshots of the source and destination storage servers are identical; wherein if the changes are for a file, the stream of individual data units includes; a file block number of the data block being replicated, a corresponding inode number for the data block corresponding to the file block number, a block of data corresponding to the file block number, and a generation number of the file. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A source storage server apparatus comprising:
-
a processor; a network interface coupled with the processor, the network interface through which the source storage server can communicate with a destination storage server; a snapshot differential module configured to create a current snapshot of a file system stored within the source storage server at a point in time, the source file system configured to store a plurality of data objects, each of which is assigned a corresponding data object identifier; and a replication engine coupled with the snapshot differential module, the replication engine configured to; scan each data object within the source file system to identify changes in the source file system that have occurred since an earlier replication operation was performed by comparing the current snapshot with a previous snapshot corresponding to the earlier replication operation; and transfer the changes in the source file system as a plurality of individual data units in a stream to the destination storage server while preserving the corresponding file system object identifiers to replicate the source file system at the destination storage server without first determining a relationship between the data units and a hierarchical structure of the source file system, wherein an ordering of the individual data units within the stream is independent of the hierarchical structure of the source file system; wherein the changes in the source file system include updates to a data block of a file containing both modified and unmodified data blocks, wherein for the file, transmitting only the modified data blocks to replicate the source file system at a destination storage server, wherein the changes in the source file system include updates to a directory entry of a directory containing both modified and unmodified directory entries, and wherein for the directory, transmitting only the modified directory entries to replicate the source file system at the destination storage server; wherein if the changes are for a file, the individual data units include; a file block number of the data block being replicated, a corresponding inode number for the data block corresponding to the file block number, a block of data corresponding to the file block number, and a generation number of the file. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A destination storage server apparatus comprising:
-
a processor; a network interface coupled with the processor, the network interface through which the destination storage server can communicate with a source storage server; and a replication engine configured to; receive, at a destination storage server, a plurality of file system objects in a stream of individual data units from a source storage server, wherein an ordering of the individual data units within the stream is independent of a hierarchical structure of a source file system of the source storage server, the stream containing only the changes that have occurred in the source file system of the source storage server since a previous replication operation was performed, wherein each of the file system objects includes a corresponding file system object identifier, wherein the changes in the source file system include updates to a data block of a file containing both modified and unmodified data blocks, wherein for the file, receiving only the modified data blocks to replicate the source file system at the destination storage server, wherein the changes in the source file system include updates to a directory entry of a directory containing both modified and unmodified directory entries, and wherein for the directory, receiving only the modified directory entries to replicate the source file system at the destination storage server; and replicate the plurality of file system objects at the destination storage server using the file system object identifiers; and a snapshot differential module configured to create a current snapshot of the replicated file system of the destination storage server once the plurality of file system objects are replicated at the destination so that corresponding snapshots of the source and destination storage servers are identical; wherein if the changes are for a file, the stream of individual data units includes; a file block number of the data block being replicated, a corresponding inode number for the data block corresponding to the file block number, a block of data corresponding to the file block number, and a generation number of the file; wherein if the changes are for a directory, the stream of individual data units includes; an inode number of a directory corresponding to a directory entry being replicated, a generation number of the directory, a name of the file system object referenced by the directory entry, an inode number of the file system object referenced by the directory entry, and a generation number of the file system object referenced by the directory entry. - View Dependent Claims (26, 27, 28, 29, 30, 31)
-
Specification