IP Library Granted Patent US 11,144,252
Granted Patent B2
US 11,144,252 · App. 16/738,405 · Granted Oct 12, 2021

Optimizing write IO bandwidth and latency in an active-active clustered system based on a single storage node having ownership of a storage object

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Ronen Gazit (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F3/067G06F3/0619G06F3/0688H04L67/1002H04L67/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 11,144,252
App. No.
16/738,405
Granted
Oct 12, 2021
Kind
B2
Abstract

Techniques for optimizing write IO bandwidth and latency in an active-active clustered system using storage object affinity to a single node. The active-active clustered system can include at least a primary storage node and a secondary storage node that maintain their own journals. The respective journals are directly accessible to both storage nodes. The journals are synchronized for each page or entity of a storage object when a storage IO request is issued to a storage node to which the storage object does not have affinity. Such synchronization is performed in the framework of acquiring a lock on the entity of the storage object during internode communications. To facilitate recovery from a disaster, data loss, and/or data corruption, transaction IDs associated with storage IO operations are employed to facilitate identification of the most up-to-date reference or description information for a given data or metadata page of a storage object.

Claims (60)

1. A method of executing a storage input/output (IO) request for a storage object that has affinity to a storage node, comprising:

receiving a storage IO request for a storage object at a respective storage node from among a first storage node and a second storage node in an active-active clustered system, the second storage node being communicably connected to the first storage node;

determining that the respective storage node is a current owner of the storage object, an ownership of the storage object providing an indication of an affinity of the storage object to the respective storage node;

having determined that the respective storage node is the current owner of the storage object, executing, by the respective storage node, the storage IO request for the storage object while avoiding performing internode communications with another storage node from among the first storage node and the second storage node in the active-active clustered system;

inspecting, by the respective storage node, the storage IO request to identify an entity associated with the storage object; and

setting, by the respective storage node, a local lock on the identified entity while avoiding performing internode communications with the other storage node in the active-active clustered system.

2. The method of claim 1 wherein the storage IO request is a write IO request, and wherein the method further comprises:

having set the local lock on the entity of the storage object, allocating, by the respective storage node, space for a journal from a directly accessible buffer; and

writing page reference or description information pertaining to the write IO request to the journal.

3. The method of claim 2 further comprising:

sending, by the respective storage node, an acknowledgement message to a host computer that issued the write IO request; and

releasing the local lock on the entity associated with the storage object.

4. The method of claim 1 wherein the storage IO request is a read IO request, and wherein the method further comprises:

having set the local lock on the entity of the storage object, reading, by the respective storage node, data corresponding to the entity associated with the storage object.

5. The method of claim 4 further comprising:

sending, by the respective storage node, an acknowledgement message to a host computer that issued the read IO request; and

releasing the local lock on the entity associated with the storage object.

6. The method of claim 1 further comprising:

receiving a second storage IO request for a second storage object at the respective storage node;

determining that the respective storage node is not the current owner of the second storage object; and

having determined that the respective storage node is not the current owner of the second storage object, engaging in internode communications with another storage node from among the first storage node and the second storage node to perform one of (i) obtaining a lock on an entity of the second storage object after transferring ownership of the second storage object from the other storage node to the respective storage node, and (ii) obtaining the lock on the entity of the second storage object without transferring the ownership of the second storage object.

7. The method of claim 6 wherein the respective storage node and the other storage node correspond to peer storage nodes in the active-active clustered system, wherein the respective storage node has allocated space for a first journal, wherein the other storage node has allocated space for a second journal, and wherein the method further comprises:

performing one or more of updating and synchronizing page reference or description information pertaining to outstanding writes to at least the second storage object stored in the first journal and the second journal, the page reference or description information including, for each of one or more storage IO operations performed on the second storage object, a transaction identifier (ID) that has (i) a first sequence ID identifying a first peer storage node in the active-active clustered system as the current owner of the second storage object that performed a respective storage IO operation on the second storage object, and (ii) a second sequence ID identifying a second peer storage node in the active-active clustered system that performed an immediately prior storage IO operation on the second storage object.

8. An active-active clustered system including at least two storage nodes communicably connected to one another, each respective storage node from among the at least two storage nodes comprising:

a memory; and

processing circuitry configured to execute program instructions out of the memory to:

receive a storage IO request for a storage object;

determine that the respective storage node is a current owner of the storage object, an ownership of the storage object providing an indication of an affinity of the storage object to the respective storage node;

having determined that the respective storage node is the current owner of the storage object, execute the storage IO request for the storage object while avoiding performing internode communications with another storage node from among the at least two storage nodes in the active-active clustered system;

inspect the storage IO request to identify an entity associated with the storage object; and

set a local lock on the identified entity while avoiding performing internode communications with the other storage node in the active-active clustered system.

9. The system of claim 8 wherein the storage IO request is a write IO request, and wherein the processing circuitry of the respective storage node is further configured to execute the program instructions out of the memory to:

having set the local lock on the entity of the storage object, allocate space for a journal from a directly accessible buffer; and

write page reference or description information pertaining to the write IO request to the journal.

10. The system of claim 9 wherein the processing circuitry of the respective storage node is further configured to execute the program instructions out of the memory to:

send an acknowledgement message to a host computer that issued the write IO request; and

release the local lock on the entity associated with the storage object.

11. The system of claim 8 wherein the storage IO request is a read IO request, and wherein the processing circuitry of the respective storage node is further configured to execute the program instructions out of the memory to:

having set the local lock on the entity of the storage object, read data corresponding to the entity associated with the storage object.

12. The system of claim 11 wherein the processing circuitry of the respective storage node is further configured to execute the program instructions out of the memory to:

send an acknowledgement message with the read data to a host computer that issued the read IO request; and

release the local lock on the entity associated with the storage object.

13. The system of claim 8 wherein the processing circuitry of the respective storage node is further configured to execute the program instructions out of the memory to:

receive a second storage IO request for a second storage object;

determine that the respective storage node is not the current owner of the second storage object; and

having determined that the respective storage node is not the current owner of the second storage object, engage in internode communications with the other storage node from among the at least two storage nodes to perform one of (i) obtaining a lock on an entity of the second storage object after transferring ownership of the second storage object from the other storage node to the respective storage node, and (ii) obtaining the lock on the entity of the second storage object without transferring the ownership of the second storage object.

14. The system of claim 13 wherein the respective storage node and the other storage node correspond to peer storage nodes in the active-active clustered system, wherein the respective storage node has allocated space for a first journal, wherein the other storage node has allocated space for a second journal, and wherein the processing circuitry of the respective storage node is further configured to execute the program instructions out of the memory to:

perform one or more of updating and synchronizing page reference or description information pertaining to outstanding writes to the second storage object stored in the first journal and the second journal, the PA reference or description information including, for each of one or more storage IO operations performed on the second storage object, a transaction identifier (ID) that has (i) a first sequence ID identifying a first peer storage node in the active-active clustered system as the current owner of the second storage object that performed a respective storage IO operation on the second storage object, and (ii) a second sequence ID identifying a second peer storage node in the active-active clustered system that performed an immediately prior storage IO operation on the second storage object.

15. A computer program product including a set of non-transitory, computer-readable media having instructions that, when executed by processing circuitry of a respective storage node from among a first storage node and a second storage node communicably connected to the first storage node in an active-active clustered system, cause the processing circuitry to perform a method comprising:

receiving a storage IO request for a storage object at the respective storage node;

determining that the respective storage node is a current owner of the storage object, an ownership of the storage object providing an indication of an affinity of the storage object to the respective storage node;

having determined that the respective storage node is the current owner of the storage object, executing, by the respective storage node, the storage IO request for the storage object while avoiding performing internode communications with another storage node from among the first storage node and the second storage node in the active-active clustered system;

inspecting, by the respective storage node, the storage IO request to identify an entity associated with the storage object; and

setting, by the respective storage node, a local lock on the identified entity while avoiding performing internode communications with the other storage node in the active-active clustered system.

16. The computer program product of claim 15 wherein the method further comprises:

having set the local lock on the entity of the storage object, allocating, by the respective storage node, space for a journal from a directly accessible buffer; and

writing page reference or description information pertaining to the storage IO request to the journal.

17. The computer program product of claim 16 wherein the method further comprises:

sending, by the respective storage node, an acknowledgement message to a host computer that issued the storage IO request; and

releasing the local lock on the entity associated with the storage object.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
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 IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052216/0758) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
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 Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2020
From: SHVEIDEL, VLADIMIR; GAZIT, RONEN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051812/0489 →