IP Library › Granted Patent US 10,685,010
Granted Patent B2
US 10,685,010 · App. 16/120,263 · Granted Jun 16, 2020

Shared volumes in distributed RAID over shared multi-queue storage devices

Inventors: Alex Friedman (Hadera, IL); Sergei Dyshel (Ramat Gan, IL); Ofir Dahan (Holon, IL); Alex Liakhovetsky (Ra'anana, IL)
Assignee: Amazon Technologies, Inc.
G06F16/2343G06F3/067G06F3/0619G06F3/0659G06F3/0689G06F11/1076G06F16/1774G06F16/2308G06F16/2336H04L67/1097
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,685,010
App. No.
16/120,263
Granted
Jun 16, 2020
Kind
B2
Abstract

A method for data storage, in a system that includes multiple servers, multiple multi-queue storage devices and at least one storage controller that communicate over a network, includes receiving in a server, from an application running on the server, a request to access data belonging to one or more stripes. The stripes are stored on the storage devices and are shared with one or more other servers. In response to the request, the following are performed at least partially in parallel: (i) requesting one or more global locks that prevent the other servers from accessing the stripes, and (ii) reading at least part of the stripes from the storage devices speculatively, irrespective of whether the global locks are granted. Execution of the request is completed upon verifying that the speculatively-read data is valid.

Claims (28)

1. A method for data storage, in a system that comprises multiple servers, multiple multi-queue storage devices and at least one storage controller that communicate over a network, the method comprising:

receiving in a server, from an application running on the server, a request to access data belonging to one or more stripes, wherein the stripes are stored on the storage devices and are shared with one or more other servers;

in response to the request, performing at least partially in parallel (i) requesting one or more global locks that prevent the other servers from accessing the stripes, and (ii) reading at least part of the stripes from the storage devices speculatively, irrespective of whether the global locks are granted; and

upon verifying that the speculatively-read data is valid, completing to execute the request.

2. The method according to claim 1 , and comprising, upon finding that the speculatively-read data is not all valid, re-reading the at least part of the stripes from the storage devices after the global locks are granted.

3. The method according to claim 1 , wherein the request from the application comprises a request to read the data, and wherein reading the stripes speculatively comprises reading the requested data from the storage devices.

4. The method according to claim 1 , wherein the request comprises a request to write given data in place of previous data, and wherein reading the stripes speculatively comprises reading from the stripes (i) data other than the given data, and (ii) redundancy information.

5. The method according to claim 4 , wherein, when the other data and the redundancy information have been read speculatively and are valid, completing to execute the request comprises recalculating the redundancy information, and writing the given data and the recalculated redundancy information to the stripes on the storage devices.

6. The method according to claim 4 , and comprising, when the other data and the redundancy information have been read speculatively but are not all valid, completing to execute the request by re-reading the other data and the redundancy information, recalculating the redundancy information, and writing the given data and the recalculated redundancy information to the stripes on the storage devices.

7. The method according to claim 1 , further comprising:

assessing a time that elapsed between requesting the global locks and receiving a notification that the global locks are granted; and

if the time that elapsed exceeds a predefined time-out, regarding the speculatively-read at least part of the stripes as invalid, even though the global locks have been granted.

8. The method according to claim 1 , further comprising:

receiving in the storage controller, from the server, a request to apply a global lock on a stripe of data stored on the storage devices; and

granting the request only when (i) no global lock is currently applied on the stripe, and (ii) the stripe was not globally locked for write operations for at least a predefined time period prior to arrival of the request.

9. A server, comprising:

a network interface, configured to communicate over a network with multiple multi-queue storage devices and at least one storage controller; and a processor, configured to:

receive, from an application running on the server, a request to access data belonging to one or more stripes, wherein the stripes are stored on the storage devices and are shared with one or more other servers;

in response to the request, perform at least partially in parallel (i) requesting one or more global locks that prevent the other servers from accessing the stripes, and (ii) read at least part of the stripes from the storage devices speculatively, irrespective of whether the global locks are granted; and

upon verifying that the speculatively-read data is valid, complete to execute the request.

10. The server according to claim 9 , wherein, upon finding that the speculatively-read data is not all valid, the processor is configured to re-read the at least part of the stripes from the storage devices after the global locks are granted.

11. The server according to claim 9 , wherein the request from the application comprises a request to read the data, and wherein the processor is configured to speculatively read the requested data from the storage devices.

12. The server according to claim 9 , wherein the request comprises a request to write given data in place of previous data, and wherein the processor is configured to speculatively read from the stripes (i) data other than the given data, and (ii) redundancy information.

13. The server according to claim 12 , wherein, when the other data and the redundancy information have been read speculatively and are valid, the processor is configured to complete to execute the request by recalculating the redundancy information, and writing the given data and the recalculated redundancy information to the stripes on the storage devices.

14. The server according to claim 12 , wherein, when the other data and the redundancy information have been read speculatively but are not all valid, the processor is configured to complete to execute the request by re-reading the other data and the redundancy information, recalculating the redundancy information, and writing the given data and the recalculated redundancy information to the stripes on the storage devices.

15. The server according to claim 9 , wherein the processor is configured to:

assess a time that elapsed between requesting the global locks and receiving a notification that the global locks are granted; and

if the time that elapsed exceeds a predefined time-out, regard the speculatively-read at least part of the stripes as invalid, even though the global locks have been granted.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2019
From: E8 STORAGE SYSTEMS LTD.
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 051014/0168 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2018
From: FRIEDMAN, ALEX; DYSHEL, SERGEI; DAHAN, OFIR; LIAKHOVETSKY, ALEX
To: E8 STORAGE SYSTEMS LTD.
Reel/Frame 046772/0442 →
Continuity (2)
Provisional Application 62556511 · Sep 11, 2017
Related Publication 20190082010A1 · Mar 14, 2019