IP Library Granted Patent US 10,521,403
Granted Patent B1
US 10,521,403 · App. 15/209,613 · Granted Dec 31, 2019

System and method of providing fault-tolerant file replication

Inventors: Felix Hupfeld (Berlin, DE); Bjoern Kolbeck (Berlin, DE)
Assignee: Quobyte Inc.
G06F16/178G06F11/1471H04L67/1097G06F2201/80G06F2201/805
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 10,521,403
App. No.
15/209,613
Granted
Dec 31, 2019
Kind
B1
Abstract

Systems and methods are provided for fault-tolerant file replication. A request including an operation and a file identifier is received. It is determined if the operation is of a predetermined type of operations. If the operation is of a predetermined type of operation, a target local replica file is identified. It is determined whether the target local replica file is a primary replica. If the target local replica file is the primary replica, the operation included in the request is executed. Otherwise, one or more of the set of storage devices on which remote replica files associated with the file identifier are stored are identified. In turn, the remote replica file that is the primary replica is identified. The request is transmitted to storage device on which the identified remote replica file that is the primary replica is stored.

Claims (63)

1. A system for providing fault-tolerant file replication, comprising:

a memory operable to store a plurality of local replica files, and

a processor coupled to the memory, the processor being operable to:

receive, from a client system over a network, a request including an operation and a file identifier;

determine if the operation is of a predetermined type of operations; and

in the event that it is determined that the operation is of a predetermined type of operation:

identify a target local replica file, from the plurality of local replica files stored in the memory, associated with the file identifier;

determine whether the target local replica file is a primary replica;

in the event that the target local replica file is the primary replica: execute the operation included in the request; and

in the event that the target local replica file is not the primary replica:

transmit a response, to the client system, indicating that the target local replica file is not the primary replica.

2. The system of claim 1 , wherein the predetermined type of operation is one of a read operation, a write operation and a truncate operation.

3. The system of claim 1 , wherein the processor is operable to:

determine whether any of the target local replica file and remote replica files associated with a target file is the primary replica; and

in the event that none of the target local replica file and the remote replica files associated with the target file is the primary replica:

transmit the target local replica file or an identifier corresponding to the target local replica file to a primary election service, to establish the primary replica from one of the target local replica file and the remote replica files associated with the target file.

4. The system of claim 1 ,

wherein each of the plurality of local replica files includes a corresponding identifier, a sequence of objects, metadata, a truncate operation log, and a size of each object in the sequence of objects, and

wherein the metadata includes a primary epoch, and each object in the sequence of objects includes a respective version.

5. The system of claim 4 ,

wherein the operation included in the request is a write operation,

wherein the request includes an object offset and data, and

wherein the processor is operable to:

update an object corresponding to the object offset in the target local replica file using the data included in the request; and

transmit, over the network, to one or more of a set of storage devices on which remote replica files associated with the target file are stored, instructions to update an object corresponding to the object offset in the respective remote replica file, using the data received in the request.

6. The system of claim 1 , wherein the processor is operable to:

modify the target local replica file based on the request; and, concurrently,

transmit instructions to one or more of a set of storage devices on which remote replica files associated with the target file are stored, to modify the remote replica files associated with the target file based on the request.

7. The system of claim 6 , wherein the operation included in the request is a write operation or a truncate operation.

8. The system of claim 6 , wherein the processor is further operable to:

receive a response from each of the one or more of the set of storage devices on which the remote replica files associated with the file identifier are stored, the response indicating whether modifying the remote replica files succeeded; and

determine that the replication of the target file succeeded when the number of received responses matches or exceeds a predetermined quorum value.

9. A method for providing fault-tolerant file replication,

comprising steps of:

receiving, from a client system over a network, a request including an operation and a file identifier;

determining if the operation is of a predetermined type of operations; and

in the event that it is determined that the operation is of a predetermined type of operation:

identifying a target local replica file, from a plurality of local replica files stored in a memory, associated with the file identifier;

determining whether the target local replica file is a primary replica;

in the event that the target local replica file is the primary replica: executing the operation included in the request; and

in the event that the target local replica file is not the primary replica:

transmit a response, to the client system, indicating that the target local replica file is not the primary replica.

10. The method of claim 9 , wherein the predetermined type of operation is one of a read operation, a write operation and a truncate operation.

11. The method of claim 9 , further comprising steps of:

determining whether any of the target local replica file and remote replica files associated with a target file is the primary replica; and

in the event that none of the target local replica file and the remote replica files associated with the target file is the primary replica:

transmitting the target local replica file or an identifier corresponding to the target local replica file to a primary election service, to establish the primary replica from one of the target local replica file and the remote replica files associated with the target file.

12. The method of claim 9 ,

wherein each of the plurality of local replica files includes a corresponding identifier, a sequence of objects, metadata, a truncate operation log, and a size of each object in the sequence of objects, and

wherein the metadata includes a primary epoch, and each object in the sequence of objects includes a respective version.

13. The method of claim 12 ,

wherein the operation included in the request is a write operation,

wherein the request includes an object offset and data, and

the method further comprising steps of:

updating an object corresponding to the object offset in the target local replica file using the data included in the request; and

transmitting, over the network, to one or more of a set of storage devices on which remote replica files associated with the target file are stored, instructions to update an object corresponding to the object offset in the respective remote replica file, using the data received in the request.

14. The method of claim 9 , further comprising steps of:

modifying the target local replica file based on the request; and, concurrently,

transmitting instructions to one or more of a set of storage devices on which remote replica files associated with the target file are stored, to modify the remote replica files associated with the target file based on the request.

15. The method of claim 14 , wherein the operation included in the request is a write operation or a truncate operation.

16. The method of claim 14 , further comprising steps of:

receiving a response from each of the one or more of the set of storage devices on which the remote replica files associated with the file identifier are stored, the response indicating whether modifying the remote replica files succeeded; and

determining that the replication of the target file succeeded when the number of received responses matches or exceeds a predetermined quorum value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2016
From: HUPFELD, FELIX; KOLBECK, BJOERN
To: QUOBYTE INC.
Reel/Frame 039380/0465 →
Continuity (1)
Continuation 14622355 · Feb 13, 2015
Cited By (4)
US 12,430,360 US 12,455,856 US 12,455,860 US 12,639,290