IP Library Granted Patent US 11,397,533
Granted Patent B2
US 11,397,533 · App. 16/867,176 · Granted Jul 26, 2022

Techniques for scalable storage without communication on the synchronous path

Inventors: Renen Hallak (Tenafly, NJ); Asaf Levy (Tel Aviv, IL); Avi Goren (Tel Aviv, IL); Alex Turin (Kiryat Ono, IL)
Assignee: Vast Data Ltd.
G06F3/0631G06F3/067G06F3/0614G06F3/0622G06F3/0653G06F3/0659G06F3/0683G06F11/0772
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,397,533
App. No.
16/867,176
Granted
Jul 26, 2022
Kind
B2
Abstract

A system and method for scalable storage. The method includes placing a lock on a portion of a storage node, wherein placing the lock further comprises replacing a first value stored in the storage node with a second value using an atomic operation, wherein the atomic operation replaces the first value with the second value when the first value indicates an empty lock status, wherein the second value indicates an active lock status; allocating a storage location in the storage node by updating metadata stored in the locked portion of the storage node when the lock has been placed; and releasing the lock, wherein releasing the lock further comprises replacing the second value with a third value, wherein the third value indicates the empty lock status.

Claims (50)

1. A method for scalable storage, comprising:

placing, by a first compute node, a lock on a portion of a storage node, wherein placing the lock further comprises replacing a first value stored in the storage node with a second value using an atomic operation, wherein the atomic operation replaces the first value with the second value when the first value indicates an empty lock status, wherein the second value is a compute node identifier associated with the first compute node, that indicates an active lock status;

allocating a storage location in the storage node by updating metadata stored in the locked portion of the storage node when the lock has been placed;

releasing the lock, wherein releasing the lock further comprises replacing the second value with a third value, wherein the third value indicates the empty lock status;

receiving a failure notification, wherein the failure notification indicates a return value;

comparing the second value to the return value; and

determining that the lock was successfully placed when the second value matches the return value.

2. The method of claim 1 , wherein the atomic operation is an atomic compare-and-swap operation.

3. The method of claim 1 , wherein the lock is a first lock, further comprising:

performing a failed attempt to place the first lock;

receiving a failure notification in response to the failed attempt to place the first lock, wherein the failure notification indicates a return value, wherein the return value indicates a compute node identifier; and

revoking a second lock when the compute node identifier indicated by the return value is not among a list of active compute nodes, wherein the first lock is placed when the second lock has been revoked.

4. The method of claim 3 , wherein the list of active compute nodes is maintained by a leader compute node, further comprising:

receiving the list of active compute nodes from the leader compute node.

5. The method of claim 1 , wherein the storage node is a first storage node of a plurality of storage nodes, further comprising:

mirroring the lock to a second storage node of the plurality of storage nodes; and

accessing the mirrored lock in the second storage node when the first storage node has failed.

6. The method of claim 5 , further comprising:

mirroring the lock to a third storage node of the plurality of storage nodes when the first storage node has failed.

7. The method of claim 1 , wherein the storage location is allocated to a compute node, wherein only the compute node can write to the allocated location.

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

placing, by a first compute node, a lock on a portion of a storage node, wherein placing the lock further comprises replacing a first value stored in the storage node with a second value using an atomic operation, wherein the atomic operation replaces the first value with the second value when the first value indicates an empty lock status, wherein the second value is a compute node identifier associated with the first compute node, that indicates an active lock status;

allocating a storage location in the storage node by updating metadata stored in the locked portion of the storage node when the lock has been placed;

releasing the lock, wherein releasing the lock further comprises replacing the second value with a third value, wherein the third value indicates the empty lock status;

receiving a failure notification, wherein the failure notification indicates a return value;

comparing the second value to the return value; and

determining that the lock was successfully placed when the second value matches the return value.

9. A system for scalable storage, comprising:

a first compute node;

a processing circuitry; and

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

place, by the first compute node, a lock on a portion of a storage node, wherein placing the lock further comprises replacing a first value stored in the storage node with a second value using an atomic operation, wherein the atomic operation replaces the first value with the second value when the first value indicates an empty lock status, wherein the second value is a compute node identifier associated with the first compute node, that indicates an active lock status;

allocate a storage location in the storage node by updating metadata stored in the locked portion of the storage node when the lock has been placed;

release the lock, wherein releasing the lock further comprises replacing the second value with a third value, wherein the third value indicates the empty lock status;

receive a failure notification, wherein the failure notification indicates a return value;

compare the second value to the return value; and

determine that the lock was successfully placed when the second value matches the return value.

10. The system of claim 9 , wherein the atomic operation is an atomic compare-and-swap operation.

11. The system of claim 9 , wherein the lock is a first lock, wherein the system is further configured to:

perform a failed attempt to place the first lock;

receive a failure notification in response to the failed attempt to place the first lock, wherein the failure notification indicates a return value, wherein the return value indicates a compute node identifier; and

revoke a second lock when the compute node identifier indicated by the return value is not among a list of active compute nodes, wherein the first lock is placed when the second lock has been revoked.

12. The system of claim 11 , wherein the list of active compute nodes is maintained by a leader compute node, wherein the system is further configured to:

receive the list of active compute nodes from the leader compute node.

13. The system of claim 9 , wherein the storage node is a first storage node of a plurality of storage nodes, wherein the system is further configured to:

mirror the lock to a second storage node of the plurality of storage nodes; and

access the mirrored lock in the second storage node when the first storage node has failed.

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

mirror the lock to a third storage node of the plurality of storage nodes when the first storage node has failed.

15. The system of claim 9 , wherein the storage location is allocated to a compute node, wherein only the compute node can write to the allocated location.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2020
From: HALLAK, RENEN; LEVY, ASAF; GOREN, AVI; TURIN, ALEX
To: VAST DATA LTD.
Reel/Frame 052575/0478 →
Continuity (1)
Related Publication 20210349643A1 · Nov 11, 2021