IP Library Granted Patent US 11,836,116
Granted Patent B2
US 11,836,116 · App. 16/040,375 · Granted Dec 5, 2023

Managing operations between heterogeneous file systems

Inventors: Shubhro Jyoti Roy (Foster City, CA); Denis Grenader (Redwood City, CA); Oleg Lvovitch (Seattle, WA)
Assignee: Box, Inc.
G06F16/1794G06F16/16G06F16/162G06F16/183G06F16/188G06F16/907
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,836,116
App. No.
16/040,375
Granted
Dec 5, 2023
Kind
B2
Abstract

Systems and methods for managing file operations over shared content in the presence of two or more heterogeneous file systems. A virtual file system provides data consistency pertaining to asynchronous interactions between the heterogeneous storage systems. Operations of the virtual file system include receiving a file system call from a first storage environment for performing one or more data operations at a second storage environment. After receiving the file system call, the virtual file system issues file system calls to the second storage environment and records a first set of metadata. To determine if and when the one or more data operations at the second storage environment have completed, the virtual file system accesses a second set of metadata from the second storage environment. The two sets of metadata are compared. If there are differences, then the virtual file system performs time delays until the two sets of metadata agree.

Claims (64)

1. A method for implementing a file system to provide data consistency pertaining to asynchronous interactions between heterogeneous storage systems, the method comprising:

maintaining a first storage environment and a second storage environment different from the first storage environment,

the first storage environment comprising a synchronously consistent file system having a set of synchronously consistent metadata,

the second storage environment comprising an asynchronously consistent file system having two sets of metadata,

a first set of metadata of the two sets of metadata comprising object consistency metadata identifying an expected state of data after execution of respective write operations received at the virtually consistent file system,

a second set of metadata of the two sets of metadata representing a state of the virtually consistent file system after execution of one or more of the respective write operations, and

wherein respective read requests from the first storage environment are processed by comparing the object consistency metadata and the second set of metadata of the two sets of metadata to determine if the respective read request can be processed without delaying the execution of the read request at the asynchronously consistent file system; and

receiving a first file system call, from the first storage environment having the synchronously consistent file system, and at the second storage environment having the virtually consistent file system, the first file system call requesting a write operation at the virtually consistent file system of the second storage environment, the virtually consistent file system comprising a consistency layer and an asynchronously consistent file system, the write operation specifying a set of data be written to the asynchronously consistent file system of the second storage environment;

recording, in response to receiving the first file system call from the first storage environment, object consistency metadata in an object consistency metadata store of the consistency layer of the virtually consistent file system, the object consistency metadata identifying an expected state of data after execution of the requested write operation received at the virtually consistent file system of the second storage environment;

issuing an operation to the asynchronously consistent file system to write the set of data, wherein the asynchronously consistent file system maintains a second set of metadata separate from the object consistency metadata in the object consistency metadata store, and the second set of metadata is to be updated to reflect the set of data having been written to the asynchronously consistent file system after the operation has been completed;

receiving a second file system call requesting a read operation on the virtually consistent file system of the second storage environment after receiving the first file system call; and

processing the request for the read operation at least by:

accessing the object consistency metadata in the object consistency metadata store and the second set of metadata of the virtually consistent file system of the second storage environment;

comparing the object consistency metadata and the second set of metadata of the virtually consistent file system to determine whether there is a pending write operation corresponding to the read operation that has not yet completed; and

executing, in response to determining that there is a pending write operation corresponding to the read operation that has not yet completed, a time delay before performing the read operation.

2. The method of claim 1 , wherein the first file system call is structured based at least in part on one or more virtual file system methods.

3. The method of claim 2 , wherein the virtual file system methods comprise one or more write methods, one or more read methods, a put method, a delete method, a rename method, a list method, or a move method.

4. The method of claim 1 , further comprising executing consistency operations that comprise at least one of, throwing an exception, manipulating the object consistency metadata, issuing at least one alert, or invoking at least one data operation at the second storage environment.

5. The method of claim 1 , wherein one or more subject objects associated with the first file system call is partitioned into two or more batches.

6. The method of claim 5 , wherein two or more data operations corresponding to the two or more batches are issued to the second storage environment.

7. The method of claim 1 , wherein the first storage environment is a consistent storage environment.

8. The method of claim 1 , wherein the second storage environment is an eventually consistent storage environment.

9. The method of claim 1 , further comprising performing a set of clean-up operations on the object consistency metadata store.

10. The method of claim 9 , wherein the set of clean-up operations comprise at least one of, purging data, or performing a garbage collection operation over the object consistency metadata store.

11. A non-transitory computer readable medium having stored thereon a set of instructions which, when executed by a processor causes a set of acts for implementing a file system to provide data consistency pertaining to asynchronous interactions between heterogeneous storage systems, the set of acts comprising:

maintaining a first storage environment and a second storage environment different from the first storage environment,

the first storage environment comprising a synchronously consistent file system having a set of synchronously consistent metadata,

the second storage environment comprising an asynchronously consistent file system having two sets of metadata,

a first set of metadata of the two sets of metadata comprising object consistency metadata identifying an expected state of data after execution of respective write operations received at the virtually consistent file system,

a second set of metadata of the two sets of metadata representing a state of the virtually consistent file system after execution of one or more of the respective write operations, and

wherein respective read requests from the first storage environment are processed by comparing the object consistency metadata and the second set of metadata of the two sets of metadata to determine if the respective read request can be processed without delaying the execution of the read request at the asynchronously consistent file system; and

receiving a first file system call, from the first storage environment having the synchronously consistent file system, and at the second storage environment having the virtually consistent file system, the first file system call requesting a write operation at the virtually consistent file system of the second storage environment, the virtually consistent file system comprising a consistency layer and an asynchronously consistent file system, the write operation specifying a set of data be written to the asynchronously consistent file system of the second storage environment;

recording, in response to receiving the first file system call from the first storage environment, object consistency metadata in an object consistency metadata store of the consistency layer of the virtually consistent file system, the object consistency metadata identifying an expected state of data after execution of the requested write operation received at the virtually consistent file system of the second storage environment;

issuing an operation to the asynchronously consistent file system to write the set of data, wherein the asynchronously consistent file system maintains a second set of metadata separate from the object consistency metadata in the object consistency metadata store, and the second set of metadata is to be updated to reflect the set of data having been written to the asynchronously consistent file system after the operation has been completed;

receiving a second file system call requesting a read operation on the virtually consistent file system of the second storage environment after receiving the first file system call; and

processing the request for the read operation at least by:

accessing the object consistency metadata in the object consistency metadata store and the second set of metadata of the virtually consistent file system of the second storage environment;

comparing the object consistency metadata and the second set of metadata of the virtually consistent file system to determine whether there is a pending write operation corresponding to the read operation that has not yet completed; and

executing, in response to determining that there is a pending write operation corresponding to the read operation that has not yet completed, a time delay before performing the read operation.

12. The computer readable medium of claim 11 , wherein the first file system call is structured based at least in part on one or more virtual file system methods.

13. The computer readable medium of claim 12 , wherein the virtual file system methods comprise one or more write methods, one or more read methods, a put method, a delete method, a rename method, a list method, or a move method.

14. The computer readable medium of claim 11 , wherein the set of acts further comprise executing consistency operations that comprise at least one of, throwing an exception, manipulating the object consistency metadata, issuing at least one alert, or invoking at least one data operation at the second storage environment.

15. The computer readable medium of claim 11 , wherein one or more subject objects associated with the first file system call is partitioned into two or more batches.

16. The computer readable medium of claim 11 , wherein the first storage environment is a consistent storage environment.

17. The computer readable medium of claim 11 , wherein the second storage environment is an eventually consistent storage environment.

18. A system for implementing a file system to provide data consistency pertaining to asynchronous interactions between heterogeneous storage systems, the system comprising:

a storage medium having stored thereon a set of instructions; and

a processor that executes the set of instructions to cause a set of acts, the set of acts comprising,

maintaining a first storage environment and a second storage environment different from the first storage environment,

the first storage environment comprising a synchronously consistent file system having a set of synchronously consistent metadata,

the second storage environment comprising an asynchronously consistent file system having two sets of metadata,

a first set of metadata of the two sets of metadata comprising object consistency metadata identifying an expected state of data after execution of respective write operations received at the virtually consistent file system,

a second set of metadata of the two sets of metadata representing a state of the virtually consistent file system after execution of one or more of the respective write operations, and

wherein respective read requests from the first storage environment are processed by comparing the object consistency metadata and the second set of metadata of the two sets of metadata to determine if the respective read request can be processed without delaying the execution of the read request at the asynchronously consistent file system; and

receiving a first file system call, from the first storage environment having the synchronously consistent file system, and at the second storage environment having the virtually consistent file system, the first file system call requesting a write operation at the virtually consistent file system of the second storage environment, the virtually consistent file system comprising a consistency layer and an asynchronously consistent file system, the write operation specifying a set of data be written to the asynchronously consistent file system of the second storage environment;

recording, in response to receiving the first file system call from the first storage environment, object consistency metadata in an object consistency metadata store of the consistency layer of the virtually consistent file system, the object consistency metadata identifying an expected state of data after execution of the requested write operation received at the virtually consistent file system of the second storage environment;

issuing an operation to the asynchronously consistent file system to write the set of data, wherein the asynchronously consistent file system maintains a second set of metadata separate from the object consistency metadata in the object consistency metadata store, and the second set of metadata is to be updated to reflect the set of data having been written to the asynchronously consistent file system after the operation has been completed;

receiving a second file system call requesting a read operation on the virtually consistent file system of the second storage environment after receiving the first file system call; and

processing the request for the read operation at least by:

accessing the object consistency metadata in the object consistency metadata store and the second set of metadata of the virtually consistent file system of the second storage environment;

comparing the object consistency metadata and the second set of metadata of the virtually consistent file system to determine whether there is a pending write operation corresponding to the read operation that has not yet completed; and

executing, in response to determining that there is a pending write operation corresponding to the read operation that has not yet completed, a time delay before performing the read operation.

19. The system of claim 18 , wherein the first storage environment is a consistent storage environment.

20. The system of claim 18 , wherein the second storage environment is an eventually consistent storage environment.

Assignments (3)
SECURITY INTEREST Recorded Jul 26, 2023
From: BOX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 064389/0686 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2018
From: LVOVITCH, OLEG
To: BOX, INC.
Reel/Frame 046485/0011 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2018
From: ROY, SHUBHRO JYOTI; GRENADER, DENIS
To: BOX, INC.
Reel/Frame 046405/0700 →
Continuity (2)
Provisional Application 62534617 · Jul 19, 2017
Related Publication 20190026309A1 · Jan 24, 2019