IP Library Granted Patent US 10,614,019
Granted Patent B2
US 10,614,019 · App. 15/581,707 · Granted Apr 7, 2020

Method and system for fast ordered writes with target collaboration

Inventors: Michael Nishimoto (Saratoga, CA); Samir Rajadnya (San Jose, CA)
Assignee: EMC IP Holding Company LLC
G06F13/4068G06F3/0604G06F3/0659G06F3/0683G06F13/1642G06F13/1673G06F13/4282G06F2213/0026
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,614,019
App. No.
15/581,707
Granted
Apr 7, 2020
Kind
B2
Abstract

In general, embodiments of the technology relate to a method and system for performing fast ordered writes in a storage appliance that includes multiple separate storage modules. More specifically, embodiments of the technology enable multicasting of data to multiple storage modules in a storage appliance, where the order in which the write requests are processed is the same across all storage modules in the storage appliance.

Claims (55)

1. A method for processing write requests comprising:

receiving, by a first storage module, a first commit request from a client, wherein the first commit request is associated with a first data and comprises an address, wherein the address is generated by applying a consistent hashing function to at least an object identifier and an offset associated with the first data, wherein the address is associated with the first storage module;

in response to receiving the first commit request:

processing the first commit request, wherein processing the first commit request causes a first copy of the first data to be stored in persistent storage in the first storage module, wherein the first copy of the first data was received from the client and by the first storage module prior to the first storage module receiving the first commit request;

generating, by the first storage module, a second commit request for a second storage module;

transmitting the second commit request to the second storage module;

receiving a first commit reply from the second storage module indicating that a second copy of the first data is stored in persistent storage in the second storage module, wherein the second copy of the first data was received from the client and by the second storage module prior to the first storage module receiving the first commit request;

in response to receiving the first commit reply and after processing the first commit request, generating, by the first storage module, a second commit reply corresponding to the first commit request; and

transmitting the second commit reply to the client.

2. The method of claim 1 , further comprising:

receiving a third commit request by the first storage module from the second storage module, wherein the third commit request is associated with a second data; and

processing the third commit request, wherein processing the third commit request causes a first copy of the second data to be stored in a slave partition of the persistent storage in the first storage module,

wherein the slave partition is associated with a master partition on the second storage module.

3. The method of claim 2 , further comprising:

prior to receiving the second commit request:

receiving a second copy of the second data from the client; and

temporarily storing the second copy of the second data in a buffer in the first storage module.

4. The method of claim 1 , wherein processing the first commit request comprises:

storing the first commit request in a global submission queue, wherein the global submission queue maintains an order of all commit requests received by the first storage module,

wherein the first commit request is processed based on the order.

5. The method of claim 1 , wherein processing the first commit request comprises:

storing the first commit request in a client submission queue associated with the client, wherein the first commit request is associated with a global sequencing tag,

wherein the first commit request is processed based on an order specified by the global sequencing tag.

6. The method of claim 1 , wherein the first commit request is received from the client from a fabric operatively connected to the client and the first storage module.

7. The method of claim 6 , wherein the second commit request is transmitted to the second storage module using the fabric.

8. The method of claim 6 , wherein the fabric is a Peripheral Component Interconnect Express (PCIe) fabric.

9. The method of claim 1 , wherein the persistent storage in the first storage module comprises phase change memory.

10. A storage appliance, comprising:

a fabric;

a storage array operatively connected to the fabric and comprising a first storage module and a second storage module,

wherein the first storage module is configured to:

receive, via the fabric, a first commit request from a client, wherein the first commit request is associated with a first data and comprises an address, wherein the address is generated by applying a consistent hashing function to at least an object identifier and an offset associated with the first data, wherein the address is associated with the first storage module;

in response to receiving the first commit request:

process the first commit request, wherein processing the first commit request causes a first copy of the first data to be stored in persistent storage in the first storage module, wherein the first copy of the first data was received from the client and by the first storage module prior to the first storage module receiving the first commit request;

generate a second commit request for a second storage module;

transmit, via the fabric, the second commit request to the second storage module;

receive, via the fabric, a first commit reply from the second storage module indicating that a second copy of the first data is stored in persistent storage in the second storage module, wherein the second copy of the first data was received from the client and by the second storage module prior to the first storage module receiving the first commit request;

in response to receiving the first commit reply and after processing the first commit request, generate a second commit reply corresponding to the first commit request; and

transmit, via the fabric, the second commit reply to the client.

11. The storage appliance of claim 10 , wherein the first storage module is further configured to:

receive a third commit request from the second storage module, wherein the third commit request is associated with a second data; and

process the third commit request, wherein processing the third commit request causes a first copy of the second data to be stored in a slave partition of the persistent storage in the first storage module,

wherein the slave partition is associated with a master partition on the second storage module.

12. The storage appliance of claim 11 , wherein the first storage module is further configured to:

prior to receiving the third commit request:

receive a second copy of the second data from the client; and

temporarily store the second copy of the second data in a buffer in the first storage module.

13. The storage appliance of claim 10 , wherein processing the first commit request comprises:

storing the first commit request in a global submission queue, wherein the global submission queue maintains an order of all commit requests received by the first storage module,

wherein the first commit request is processed based on the order.

14. The storage appliance of claim 10 , wherein processing the first commit request comprises:

storing the first commit request in a client submission queue associated with the client, wherein the first commit request is associated with a global sequencing tag,

wherein the first commit request is processed based on an order specified by the global sequencing tag.

15. The storage appliance of claim 10 , wherein the fabric is a Peripheral Component Interconnect Express (PCIe) fabric.

16. The storage appliance of claim 10 , wherein the persistent storage in the first storage module comprises phase change memory.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AT REEL 048825 FRAME 0489 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058000/0916 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Apr 8, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 048825/0489 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2017
From: NISHIMOTO, MICHAEL; RAJADNYA, SAMIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044958/0538 →
Continuity (1)
Related Publication 20180314663A1 · Nov 1, 2018