Virtual file system for cloud-based shared content
A server in a cloud-based environment interfaces with storage devices that store shared content accessible by two or more users. Individual items within the shared content are associated with respective object metadata that is also stored in the cloud-based environment. Download requests initiate downloads of instances of a virtual file system module to two or more user devices associated with two or more users. The downloaded virtual file system modules capture local metadata that pertains to local object operations directed by the users over the shared content. Changed object metadata attributes are delivered to the server and to other user devices that are accessing the shared content. Peer-to-peer connections can be established between the two or more user devices. Object can be divided into smaller portions such that processing the individual smaller portions of a larger object reduces the likelihood of a conflict between user operations over the shared content.
1 . A method, comprising:
identifying a cloud-based storage system;
identifying a local client that is remote to the cloud-based storage system, the local client comprising both a native file system and a virtual file system, wherein local content corresponding to the local file system is stored at the local client and remote content corresponding to the virtual file system is stored at the cloud-based storage system;
maintaining local metadata that is local to the local client that represents the remote content stored at the cloud-based storage system; and
updating the local metadata in response to local operations at the local client, wherein the local metadata local to the local client is asynchronously reconciled by the cloud-based storage system.
2 . The method of claim 1 , further comprising:
tracking, by the cloud-based storage system, one or more respective local operations that are performed on a shared content object in a common workspace, wherein
each of a plurality of local clients performs the one or more respective local operations in the common workspace that is maintained by the cloud-based storage system,
the one or more respective local operations are performed by the plurality of local clients asynchronously, and
the cloud-based storage system asynchronously reconciles multiple operations made by multiple local clients to an object stored at the cloud-based storage system.
3 . The method of claim 1 , further comprising:
provisioning low latency signaling of local operations performed by multiple local clients on a shared content object, wherein
low latency access is provided to the shared content object stored at the cloud-based storage system by the multiple local clients, and at least one of the multiple local clients is used to locally track the local operations using the local metadata.
4 . The method of claim 1 , further comprising:
receiving, at the local client, a function call to access a file or a directory from a native application in the local client;
receiving the function call at a layer using at least a file system driver;
redirecting, by an adapter layer, the function call to the virtual file system in the local client; and
servicing, by the virtual file system, the function call from the native application at least by calling the cloud-based storage system to access the file or the directory from the cloud-based storage system, wherein
collaborative access is provided to an object stored at the cloud-based storage system by multiple collaborators at multiple local clients, and at least one of the multiple local clients is used to locally track the local operations using the local metadata.
5 . The method of claim 1 , further comprising:
receiving, at the local client, a request for processing a file or directory in the virtual file system;
effecting a local change to the file or directory in the virtual file system, without waiting for a commit at the cloud-based storage system;
updating the local metadata to reflect the local change to the file or directory, without waiting for the commit at the cloud-based storage system;
performing an act of committing the local change to the cloud-based storage system asynchronously to the local change effected to the file or directory in the virtual file system; and
in response to the act of committing the local change to the cloud-based storage system, modifying remote view metadata in the virtual file system at the local client, wherein an object stored at the cloud-based storage system is opened by both a first user at a first local client and a second user at a second local client, where the first user is not made aware of an editing operation currently being made by the second user.
6 . The method of claim 5 , further comprising:
listening, at a different local client of a second user, for one or more events pertaining a separate file system in the different local client;
receiving, at the different local client, an event corresponding to committing the local change to the cloud-based storage system, wherein the local change is effected to the file or directory by the request received at the local client; and
determining, by the different local client, how the event relates to a local view of the separate file system in the different local client, wherein
after the second user saves edits made to the object, the first user is provided access to an updated version of the object.
7 . The method of claim 1 , wherein the virtual file system comprises an interface that emulates the native file system of the local client, the virtual file system modifies locally maintained data and local metadata at least by managing a first processing path and coordinates a request pertaining to a change that needs to be made in the cloud-based storage system at least by managing a second processing path, and multiple virtual file systems are mounted on the local client.
8 . A non-transitory computer readable medium having stored thereon a sequence of instructions which, when stored in memory and executed by a microprocessor causes the microprocessor to perform a set of acts comprising:
identifying a cloud-based storage system;
identifying a local client that is remote to the cloud-based storage system, the local client comprising both a native file system and a virtual file system, wherein local content corresponding to the local file system is stored at the local client and remote content corresponding to the virtual file system is stored at the cloud-based storage system;
maintaining local metadata that is local to the local client that represents the remote content stored at the cloud-based storage system; and
updating the local metadata in response to local operations at the local client, wherein the local metadata local to the local client is asynchronously reconciled by the cloud-based storage system.
9 . The computer readable medium of claim 8 , the set of acts further comprising:
tracking, by the cloud-based storage system, one or more respective local operations that are performed on a shared content object in a common workspace, wherein
each of a plurality of local clients performs the one or more respective local operations in the common workspace that is maintained by the cloud-based storage system,
the one or more respective local operations are performed by the plurality of local clients asynchronously, and
the cloud-based storage system asynchronously reconciles multiple operations made by multiple local clients to an object stored at the cloud-based storage system.
10 . The computer readable medium of claim 8 , the set of acts further comprising:
provisioning low latency signaling of local operations performed by multiple local clients on a shared content object, wherein
low latency access is provided to the shared content object stored at the cloud-based storage system by the multiple local clients, at least one of the multiple local clients is used to locally track the local operations using the local metadata.
11 . The computer readable medium of claim 8 , the set of acts further comprising:
receiving, at the local client, a function call to access a file or a directory from a native application in the local client;
receiving the function call at a layer using at least a file system driver;
redirecting, by an adapter layer, the function call to the virtual file system in the local client; and
servicing, by the virtual file system, the function call from the native application at least by calling the cloud-based storage system to access the file or the directory from the cloud-based storage system, wherein
collaborative access is provided to an object stored at the cloud-based storage system by multiple collaborators at multiple local clients, and at least one of the multiple local clients is used to locally track the local operations using the local metadata.
12 . The computer readable medium of claim 8 , the set of acts further comprising:
receiving, at the local client, a request for processing a file or directory in the virtual file system;
effecting a local change to the file or directory in the virtual file system, without waiting for a commit at the cloud-based storage system;
updating the local metadata to reflect the local change to the file or directory, without waiting for the commit at the cloud-based storage system;
committing the local change to the cloud-based storage system asynchronously to the local change effected to the file or directory in the virtual file system; and
in response to committing the local change to the cloud-based storage system, modifying remote view metadata in the virtual file system at the local client, wherein
an object stored at the cloud-based storage system is opened by both a first user at a first local client and a second user at a second local client, where the first user is not made aware of an editing operation currently being made by the second user.
13 . The computer readable medium of claim 12 , the set of acts further comprising:
listening, at a different local client of a second user, for one or more events pertaining a separate file system in the different local client;
receiving, at the different local client, an event corresponding to committing the local change to the cloud-based storage system, wherein the local change is effected to the file or directory by the request received at the local client; and
determining, by the different local client, how the event relates to a local view of the separate file system in the different local client, wherein
after the second user saves edits made to the object, the first user is provided access to an updated version of the object.
14 . The computer readable medium of claim 8 , wherein the virtual file system comprises an interface that emulates the native file system of the local client, the virtual file system modifies locally maintained data and local metadata at least by managing a first processing path and coordinates a request pertaining to a change that needs to be made in the cloud-based storage system at least by managing a second processing path, and multiple virtual file systems are mounted on the local client.
15 . The system of claim 14 , the set of acts further comprising:
tracking, by the cloud-based storage system, one or more respective local operations that are performed on a shared content object in a common workspace, wherein
each of a plurality of local clients performs the one or more respective local operations in the common workspace that is maintained by the cloud-based storage system,
the one or more respective local operations are performed by the plurality of local clients asynchronously, and
the cloud-based storage system asynchronously reconciles multiple operations made by multiple local clients to an object stored at the cloud-based storage system.
16 . The system of claim 14 , the set of acts further comprising:
provisioning low latency signaling of local operations performed by multiple local clients on a shared content object, wherein
low latency access is provided to the shared content object stored at the cloud-based storage system by the multiple local clients, and at least one of the multiple local clients is used to locally track the local operations using the local metadata.
17 . The system of claim 14 , the set of acts further comprising:
receiving, at the local client, a function call to access a file or a directory from a native application in the local client;
receiving the function call at a layer using at least a file system driver;
redirecting, by an adapter layer, the function call to the virtual file system in the local client; and
servicing, by the virtual file system, the function call from the native application at least by calling the cloud-based storage system to access the file or the directory from the cloud-based storage system, wherein
collaborative access is provided to an object stored at the cloud-based storage system by multiple collaborators at multiple local clients, and at least one of the multiple local clients is used to locally track the local operations using the local metadata.
18 . The system of claim 14 , the set of acts further comprising:
receiving, at the local client, a request for processing a file or directory in the virtual file system;
effecting a local change to the file or directory in the virtual file system, without waiting for a commit at the cloud-based storage system;
updating the local metadata to reflect the local change to the file or directory, without waiting for a commit at the cloud-based storage system;
committing the local change to the cloud-based storage system asynchronously to the local change effected to the file or directory in the virtual file system; and
in response to committing the local change to the cloud-based storage system, modifying remote view metadata in the virtual file system at the local client, wherein
an object stored at the cloud-based storage system is opened by both a first user at a first local client and a second user at a second local client, where the first user is not made aware of an editing operation currently being made by the second user.
19 . The system of claim 14 , the set of acts further comprising:
listening, at a different local client of a second user, for one or more events pertaining a separate file system in the different local client;
receiving, at the different local client, an event corresponding to committing the local change to the cloud-based storage system, wherein the local change is effected to the file or directory by the request received at the local client; and
determining, by the different local client, how the event relates to a local view of the separate file system in the different local client, wherein
the virtual file system comprises an interface that emulates the native file system of the local client,
the virtual file system modifies locally maintained data and local metadata at least by managing a first processing path and coordinates a request pertaining to a change that needs to be made in the cloud-based storage system at least by managing a second processing path, and
multiple virtual file systems are mounted on the local client.
20 . A system, comprising:
a non-transitory storage medium having stored thereon a sequence of instructions; and
a processor or processors that execute the sequence of instructions to cause the processor or processors to perform a set of acts, the set of acts comprising:
identifying a cloud-based storage system;
identifying a local client that is remote to the cloud-based storage system, the local client comprising both a native file system and a virtual file system, wherein local content corresponding to the local file system is stored at the local client and remote content corresponding to the virtual file system is stored at the cloud-based storage system;
maintaining local metadata that is local to the local client that represents the remote content stored at the cloud-based storage system; and
updating the local metadata in response to local operations at the local client, wherein the local metadata local to the local client is asynchronously reconciled by the cloud-based storage system.