IP Library Granted Patent US 10,764,368
Granted Patent B2
US 10,764,368 · App. 15/584,551 · Granted Sep 1, 2020

System and method for providing data redundancy for remote direct memory access storage devices

Inventors: Yaniv Romem (Jerusalem, IL); Ofer Oshri (Kfar Saba, IL); Omri Mann (Jerusalem, IL); Daniel Herman Shmulyan (Beer Yaaqov, IL)
Assignee: Excelero Storage Ltd.
H04L67/1097G06F13/28H04L67/42
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,764,368
App. No.
15/584,551
Granted
Sep 1, 2020
Kind
B2
Abstract

A system and method for providing data redundancy. The method includes receiving a write instruction, the write instruction including data to be written to a primary remote direct access (RDMA) storage and a primary block address corresponding to a designated primary block of the primary RDMA storage, wherein the designated primary block is associated with a primary lock stored in the primary RDMA storage; determining whether the primary lock and at least one secondary lock are obtained, wherein each secondary lock is associated with a secondary block of a distinct secondary RDMA storage; and writing the data included in the write instruction to the designated primary data block and each secondary data block associated with the obtained at least one secondary lock, when it is determined that the primary lock and the at least one secondary lock have been obtained.

Claims (38)

1. A method for providing data redundancy, comprising:

receiving a write instruction, the write instruction including data to be written to a primary remote direct access (RDMA) storage and a primary block address corresponding to a designated primary block of the primary RDMA storage, wherein the designated primary block is associated with a primary lock stored in the primary RDMA storage;

determining whether the primary lock and at least one secondary lock are obtained, wherein each secondary lock is associated with a secondary block of a distinct secondary RDMA storage; and

writing the data included in the write instruction to the designated primary data block and each secondary data block associated with the obtained at least one secondary lock, when it is determined that the primary lock and the at least one secondary lock have been obtained, wherein the write instruction is executed only once both the primary lock and the at least one secondary lock have been obtained.

2. The method of claim 1 , wherein the primary lock is of a plurality of primary locks stored in the primary RDMA storage, wherein the plurality of primary locks is stored in a fixed size data structure.

3. The method of claim 2 , wherein the fixed size data structure is a hash table.

4. The method of claim 1 , wherein the primary RDMA storage includes a network interface controller, the method further comprising:

storing the received write instruction in a queue of the network interface controller, when it is determined that at least one of the primary lock and the at least one secondary lock has not been obtained.

5. The method of claim 4 , further comprising:

determining that the primary lock and the at least one secondary lock are obtained while the write instruction is stored in the queue; and

upon determining that the primary lock and the at least one secondary lock are obtained while the write instruction is stored in the queue, writing the data included in the queued write instruction to the primary block and to the at least one secondary block.

6. The method of claim 1 , wherein the write instruction is received from a client device, and wherein the primary lock is obtained by any of: the client device, and the primary RDMA storage.

7. The method of claim 6 , wherein the at least one secondary lock is obtained by at least one of: the client device, and the primary RDMA storage.

8. The method of claim 7 , wherein the at least one secondary lock is obtained by the primary RDMA storage, wherein the RDMA storage further stores a list of segments requiring high availability, each segment including a contiguous group of primary blocks of the plurality of primary blocks, wherein the at least one secondary lock is obtained when the designated primary block is in a segment requiring high availability.

9. The method of claim 1 , wherein each of the primary RDMA storage and the at least one secondary RDMA storage is included in a server.

10. A non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to execute a process, the process comprising:

receiving a write instruction, the write instruction including data to be written to a primary remote direct access (RDMA) storage and a primary block address corresponding to a designated primary block of the primary RDMA storage, wherein the primary block is associated with a primary lock stored in the primary RDMA storage;

determining whether the primary lock and at least one secondary lock are obtained, wherein each secondary lock is associated with a secondary block of a distinct secondary RDMA storage; and

writing the data included in the write instruction to the designated primary block and each secondary block associated with the obtained at least one secondary lock, when it is determined that the primary lock and the at least one secondary lock have been obtained, wherein the write instruction is executed only once both the primary lock and the at least one secondary lock have been obtained.

11. A system for providing data redundancy, comprising:

a primary remote direct memory access (RDMA) storage, wherein the primary RDMA storage stores a plurality of primary blocks and a plurality of primary locks, wherein each primary lock is associated with at least one of the plurality of primary blocks;

at least one secondary RDMA storage, wherein each secondary RDMA storage stores a plurality of secondary blocks and a plurality of secondary locks, wherein each secondary lock is associated with at least one of the plurality of secondary blocks;

a processing circuitry; and

a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:

receive a write instruction, the write instruction including data to be written to the primary RDMA storage and a primary block address corresponding to a designated primary block of the plurality of primary blocks;

determine whether the primary lock associated with the designated primary block and at least one secondary lock are obtained, wherein each secondary lock is associated with a secondary block of a distinct secondary RDMA storage of the at least one secondary RDMA storage; and

write the data included in the write instruction to the primary block and each secondary block associated with the obtained at least one secondary lock, when it is determined that the primary lock and the at least one secondary lock have been obtained, wherein the write instruction is executed only once both the primary lock and the at least one secondary lock have been obtained.

12. The system of claim 11 , wherein the primary lock is of a plurality of primary locks stored in the primary RDMA storage, wherein the plurality of primary locks is stored in a fixed size data structure.

13. The system of claim 12 , wherein the fixed size data structure is a hash table.

14. The system of claim 11 , wherein the primary RDMA storage includes a network interface controller, wherein the system is further configured to:

storing the received write instruction in a queue of the network interface controller, when it is determined that at least one of the primary lock and the at least one secondary lock has not been obtained.

15. The system of claim 14 , wherein the system is further configured to:

determine that the primary lock and the at least one secondary lock are obtained while the write instruction is stored in the queue; and

upon determining that the primary lock and the at least one secondary lock are obtained while the write instruction is stored in the queue, write the data included in the queued write instruction to the primary block and to the at least one secondary block.

16. The system of claim 11 , wherein the write instruction is received from a client device, and wherein the primary lock is obtained by any of: the client device, and the primary RDMA storage.

17. The system of claim 16 , wherein the at least one secondary lock is obtained by at least one of: the client device, and the primary RDMA storage.

18. The system of claim 17 , wherein the at least one secondary lock is obtained by the primary RDMA storage, wherein the RDMA storage further stores a list of segments requiring high availability, each segment including a contiguous group of primary blocks of the plurality of primary blocks, wherein the at least one secondary lock is obtained when the designated primary block is in a segment requiring high availability.

19. The system of claim 11 , wherein each of the primary RDMA storage and the at least one secondary RDMA storage is included in a server.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2022
From: EXCELERO STORAGE LTD.
To: NVIDIA CORPORATION
Reel/Frame 059249/0950 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2017
From: ROMEM, YANIV; OSHRI, OFER; MANN, OMRI; SHMULYAN, DANIEL HERMAN
To: EXCELERO STORAGE LTD.
Reel/Frame 042386/0724 →
Continuity (2)
Provisional Application 62331397 · May 3, 2016
Related Publication 20170324814A1 · Nov 9, 2017