Versioned file system with fast restore
First Claim
1. A non-transitory computer-readable medium having stored thereon program instructions that, when executed by a processor, cause the processor to:
- perform operations associated with a versioned file system comprising a set of versions, wherein each version comprises a tree of write-once objects, wherein versions share objects, and wherein each version has a borrow window associated therewith, the borrow window identifying a fixed number of subsequent file system versions from which an object can be shared;
in response to a receipt of a request to restore a portion of a prior version of the versioned file system, return file and directory metadata of the restored portion prior to returning contents of the restored portion;
determine whether a current version of the file system is within the respective borrow windows of shared objects associated with the restored portion;
if the current version of the file system is within the respective borrow windows of the shared objects associated with the restored portion, restore the contents of the restored portion without overwriting data in the current version by associating the shared objects for the restored portion with a new location in the versioned file system, wherein the association results in first and second identifiers within the versioned file system pointing to identical data objects in the restored portion, the first and second identifiers associated with the prior version and a new version, respectively;
if the current version does not exist within the respective borrow windows of the shared objects associated with the restored portion, perform a slow restore of the restored portion; and
upon receipt of a request to open the restored portion that is distinct from the request to restore, return the contents of the restored portion regardless of whether current version exists within the respective borrow windows.
1 Assignment
0 Petitions
Accused Products
Abstract
A versioned file system comprises a set of structured data representations. Each structured data representation corresponds to a version, and each version comprises a tree of write-once objects. Each version in the versioned file system has associated therewith a borrow window. When it is desired to reconstruct the file system to a point in time, i.e., to perform a “restore,” it is only required to walk a single structured data representation. During a restore, metadata is pulled back from the cloud first, so users can see the existence of needed files immediately. The remainder of the data is pulled back from the cloud when the user goes to open the file. As a result, the entire file system is restored to a previous time nearly instantaneously. A fast restore is performed if an object being restored exists within a borrow window of the version from which the system is restoring.
91 Citations
17 Claims
-
1. A non-transitory computer-readable medium having stored thereon program instructions that, when executed by a processor, cause the processor to:
-
perform operations associated with a versioned file system comprising a set of versions, wherein each version comprises a tree of write-once objects, wherein versions share objects, and wherein each version has a borrow window associated therewith, the borrow window identifying a fixed number of subsequent file system versions from which an object can be shared; in response to a receipt of a request to restore a portion of a prior version of the versioned file system, return file and directory metadata of the restored portion prior to returning contents of the restored portion; determine whether a current version of the file system is within the respective borrow windows of shared objects associated with the restored portion; if the current version of the file system is within the respective borrow windows of the shared objects associated with the restored portion, restore the contents of the restored portion without overwriting data in the current version by associating the shared objects for the restored portion with a new location in the versioned file system, wherein the association results in first and second identifiers within the versioned file system pointing to identical data objects in the restored portion, the first and second identifiers associated with the prior version and a new version, respectively; if the current version does not exist within the respective borrow windows of the shared objects associated with the restored portion, perform a slow restore of the restored portion; and upon receipt of a request to open the restored portion that is distinct from the request to restore, return the contents of the restored portion regardless of whether current version exists within the respective borrow windows. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of restoring a file in a versioned file system, the method comprising:
-
receiving a request to restore a portion of a prior version of the versioned file system; returning file and directory metadata of the restored portion prior to returning contents of the restored portion; stitching the file and directory metadata into a current version of the versioned file system such that the current version appears to include the restored portion prior to returning the contents of the restored portion; determining whether the current version of the file system is within the respective borrow windows of shared objects associated with the restored portion; if the current version of the file system is within the respective borrow windows of the shared objects associated with the restored portion, restoring the contents of the restored portion without overwriting data in the current version by associating the shared objects for the restored portion with a new location in the versioned file system, wherein the association results in first and second identifiers within the versioned file system pointing to identical data objects in the restored portion, the first and second identifiers associated with the prior version and a new version, respectively; if the current version does not exist within the respective restore borrow windows of the shared objects associated with the restored portion, performing a slow restore of the restored portion; and receiving a request to open the restored portion that is distinct from the request to restore; and in response to receiving the request to open the restored portion, returning the contents of the restored portion regardless of whether the current version exists within the respective borrow windows. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A system comprising:
-
a processor; and a memory having program instructions stored thereon that, when executed by the processor, cause the processor to; perform operations associated with a versioned file system comprising a set of versions, wherein each version comprises a tree of write-once objects, wherein versions share objects, and wherein each version has a borrow window associated therewith the borrow window identifying a fixed number of subsequent file system versions from which an object can be shared; in response to a receipt of a request to restore a portion of a prior version of the versioned file system, return file and directory metadata of the restored portion prior to returning contents of the restored portion; determine whether a current version of the file system is within the respective borrow windows of shared objects associated with the restored portion; if the current version of the file system is within the respective borrow windows of the shared objects associated with the restored portion, restore the contents of the restored portion without overwriting data in the current version by associating the shared objects for the restored portion with a new location in the versioned file system, wherein the association results in first and second identifiers within the versioned file system pointing to identical data objects in the restored portion, the first and second identifiers associated with the prior version and a new version, respectively; if the current version does not exist within the respective restore borrow windows of the shared objects associated with the restored portion, perform a slow restore of the restored portion; and in response to receiving the request to open the restored portion, return the contents of the restored portion regardless of whether the current version exists within the respective borrow windows. - View Dependent Claims (14, 15, 16, 17)
-
Specification