TECHNICAL FIELD

The present disclosure relates generally to distributed storage, and more specifically to communications among nodes in distributed storage systems.

BACKGROUND

Storage systems are configured to serve client requests for accessing data in the storage system. Usually, these requests are requests to read data from the storage system or to write data to the storage system, although other types of requests such as requests file creation and deletion may be received.

Distributed storage systems include multiple nodes capable of storing data and/or performing storage operations with respect to storing data. In distributed storage systems, requests can arrive at multiple nodes at or around the same time. These requests may conflict with or depend on each other and, thus, techniques for coordinating these requests are required.

Existing solutions include techniques for coordinating requests. However, these existing solutions utilize communications on the synchronous path. Use of the synchronous path may contribute to latency, lead to workload imbalances that overload nodes, and may result in major delays when nodes fail.

It would therefore be advantageous to provide a solution that would overcome the challenges noted above.

SUMMARY

A summary of several example embodiments of the disclosure follows. This summary is provided for the convenience of the reader to provide a basic understanding of such embodiments and does not wholly define the breadth of the disclosure. This summary is not an extensive overview of all contemplated embodiments, and is intended to neither identify key or critical elements of all embodiments nor to delineate the scope of any or all aspects. Its sole purpose is to present some concepts of one or more embodiments in a simplified form as a prelude to the more detailed description that is presented later. For convenience, the term “some embodiments” or “certain embodiments” may be used herein to refer to a single embodiment or multiple embodiments of the disclosure.

Certain embodiments disclosed herein include a method for scalable storage. The method comprises: 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.

Certain embodiments disclosed herein also include a non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to execute a process, the process comprising: 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.

Certain embodiments disclosed herein also include a system for scalable storage. The system comprises: a processing circuitry; and a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to: place 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; 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; and 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.

