IP Library Granted Patent US 11,216,195
Granted Patent B1
US 11,216,195 · App. 16/945,383 · Granted Jan 4, 2022

Sharing blocks of non-volatile data storage to support cache flushes in a multi-node data storage system

Inventors: Philippe Armangau (Acton, MA); Vamsi K. Vankamamidi (Hopkinton, MA); Bruce E. Caram (Hudson, MA); Ajay Karri (South Grafton, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0631G06F3/0604G06F12/0804G06F12/0871G06F3/0689G06F2212/604
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,216,195
App. No.
16/945,383
Granted
Jan 4, 2022
Kind
B1
Abstract

An allocation history is maintained for each node in a multi-node data storage system. The allocation history for each node indicates sets of physical blocks previously allocated to the node to store dirty pages of user data flushed from a cache of the node. The allocation history indicates non-quarantined sets of physical blocks that are currently being used to provide non-volatile data storage to cache flush operations, and quarantined sets of physical blocks not currently being used to provide non-volatile data storage to cache flush operations. Allocation is prevented to any node of any set of physical blocks that is indicated as non-quarantined by any of the allocation histories, and of any set of physical blocks that is indicated as quarantined by any of the allocation histories.

Claims (30)

1. A method comprising:

maintaining, for each node in a multi-node data storage system, an allocation history indicating sets of physical blocks previously allocated to the node for storing dirty pages of user data flushed from a cache of the node, wherein the allocation history indicates non-quarantined sets of physical blocks that are currently allocated to the node and are currently being used to provide non-volatile data storage to cache flush operations that store dirty pages of user data flushed from the cache of the node, and wherein the allocation history also indicates quarantined sets of physical blocks that are no longer allocated to the node and are not currently being used to provide non-volatile data storage to cache flush operations that store dirty pages of user data flushed from the cache of the node; and

processing requests from the nodes of the multi-node data storage system for allocation of sets of physical blocks for storing dirty pages of user data flushed from their caches by reading the allocation histories maintained by the nodes of the multi-node data storage system, and preventing allocation of sets of physical blocks that are indicated as non-quarantined by any of the allocation histories, and also preventing allocation of sets of physical blocks that are indicated as quarantined by any of the allocation histories.

2. The method of claim 1 , wherein each node in the multi-node data storage system initially indicates in its allocation history that each set of physical blocks that is allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is non-quarantined at the time the set of physical blocks is allocated to the node.

3. The method of claim 2 , wherein each node in the multi-node data storage system modifies its allocation history to indicate that each individual set of physical blocks previously allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is quarantined instead of non-quarantined prior to removing an indication of that set of physical blocks from its allocation history.

4. The method of claim 3 , wherein each node in the multi-node data storage system modifies its allocation history to indicate that an individual set of physical blocks previously allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is quarantined instead of non-quarantined responsive to having used all of the free physical blocks in the set of physical blocks to store dirty pages of user data flushed from the cache of the node.

5. The method of claim 4 , further comprising:

wherein the allocation history of each node in the multi-node data storage system includes a first set of entries storing indications of the non-quarantined sets of physical blocks that are currently allocated to the node and are currently being used to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node; and

wherein the allocation history of each node in the multi-node data storage system includes a second set of entries storing indications of the quarantined sets of physical blocks that are no longer allocated to the node and are not currently being used to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node.

6. The method of claim 5 , wherein each node in the multi-node data storage system initially indicates in its allocation history that each set of physical blocks that is allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is non-quarantined at the time the set of physical blocks is allocated to the node by initially storing an indication of each set of physical blocks that is allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node within the first set of entries in its allocation history at the time the set of physical blocks is allocated to the node.

7. The method of claim 6 , wherein each node in the multi-node data storage system modifies its allocation history to indicate that each set of physical blocks previously allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is quarantined instead of non-quarantined prior to removing the indication of the set of physical blocks from its allocation history by moving the indication of the set of physical blocks from the first set of entries in the allocation history of the node to the second set of entries in the allocation history of the node prior to removing the indication of the set of physical blocks from the allocation history.

8. The method of claim 7 , wherein each node in the multi-node data storage system delays removal an individual indication of a set of physical blocks stored in the second set of entries in the allocation history of the node from the second set of entries in the allocation history of the node until after detecting that a predetermined number of indications of sets physical blocks have been moved from the first set of entries in the allocation history of the node to the second set of entries in the allocation history of the node after the indication of the set of physical blocks was moved to the second set of entries in the allocation history of the node from the first set of entries in the allocation history of the node.

9. A multi-node data storage system comprising:

a plurality of nodes, each node including processing circuitry and a memory;

a plurality of non-volatile data storage drives communicably coupled to the plurality of nodes; and

wherein the memory of each node has program code stored thereon, wherein the program code, when executed by the processing circuitry of the node, causes the processing circuitry of the node to:

maintain an allocation history indicating sets of physical blocks previously allocated to the node for storing dirty pages of user data flushed from a cache of the node, wherein the allocation history indicates non-quarantined sets of physical blocks that are currently allocated to the node and are currently being used to provide non-volatile data storage to cache flush operations that store dirty pages of user data flushed from the cache of the node, and wherein the allocation history also indicates quarantined sets of physical blocks that are no longer allocated to the node and are not currently being used to provide non-volatile data storage to cache flush operations that store dirty pages of user data flushed from the cache of the node; and

process requests from the nodes of the multi-node data storage system for allocation of sets of physical blocks for storing dirty pages of user data flushed from their caches by reading the allocation histories maintained by the nodes of the multi-node data storage system, and preventing allocation of sets of physical blocks that are indicated as non-quarantined by any of the allocation histories, and also preventing allocation of sets of physical blocks that are indicated as quarantined by any of the allocation histories.

10. The multi-node data storage system of claim 9 , wherein the program code stored in the memory of each node, when executed by the processing circuitry of the node, causes the processing circuitry of the node to initially indicate in its allocation history that each set of physical blocks that is allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is non-quarantined at the time the set of physical blocks is allocated to the node.

11. The multi-node data storage system of claim 10 , wherein the program code stored in the memory of each node, when executed by the processing circuitry of the node, causes the processing circuitry of the node to modifies the node's allocation history to indicate that each individual set of physical blocks previously allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is quarantined instead of non-quarantined prior to removing an indication of that set of physical blocks from its allocation history.

12. The multi-node data storage system of claim 11 , wherein the program code stored in the memory of each node, when executed by the processing circuitry of the node, causes the processing circuitry of the node to modify the allocation history of the node to indicate that an individual set of physical blocks previously allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is quarantined instead of non-quarantined responsive to having used all of the free physical blocks in the set of physical blocks to store dirty pages of user data flushed from the cache of the node.

13. The multi-node data storage system of claim 12 , further comprising:

wherein the allocation history of each node in the multi-node data storage system includes a first set of entries storing indications of the non-quarantined sets of physical blocks that are currently allocated to the node and are currently being used to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node; and

wherein the allocation history of each node in the multi-node data storage system includes a second set of entries storing indications of the quarantined sets of physical blocks that are no longer allocated to the node and are not currently being used to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node.

14. The multi-node data storage system of claim 13 , wherein the program code stored in the memory of each node, when executed by the processing circuitry of the node, causes the processing circuitry of the node to initially indicates in the allocation history of the node that each set of physical blocks that is allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is non-quarantined at the time the set of physical blocks is allocated to the node by initially storing an indication of each set of physical blocks that is allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node within the first set of entries in its allocation history at the time the set of physical blocks is allocated to the node.

15. The multi-node data storage system of claim 14 , wherein the program code stored in the memory of each node, when executed by the processing circuitry of the node, causes the processing circuitry of the node to modify the allocation history of the node to indicate that each set of physical blocks previously allocated to the node to provide non-volatile data storage to store dirty pages of user data flushed from the cache of the node is quarantined instead of non-quarantined prior to removing the indication of the set of physical blocks from its allocation history by moving the indication of the set of physical blocks from the first set of entries in the allocation history of the node to the second set of entries in the allocation history of the node prior to removing the indication of the set of physical blocks from the allocation history.

16. The multi-node data storage system of claim 15 , wherein the program code stored in the memory of each node, when executed by the processing circuitry of the node, causes the processing circuitry of the node to delay removal of an individual indication of a set of physical blocks stored in the second set of entries in the allocation history of the node from the second set of entries in the allocation history of the node until after detecting that a predetermined number of indications of sets physical blocks have been moved from the first set of entries in the allocation history of the node to the second set of entries in the allocation history of the node after the indication of the set of physical blocks was moved to the second set of entries in the allocation history of the node from the first set of entries in the allocation history of the node.

17. A computer program product including a non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed on processing circuitry, cause the processing circuitry to perform the steps of:

maintaining, for each node in a multi-node data storage system, an allocation history indicating sets of physical blocks previously allocated to the node for storing dirty pages of user data flushed from a cache of the node, wherein the allocation history indicates non-quarantined sets of physical blocks that are currently allocated to the node and are currently being used to provide non-volatile data storage to cache flush operations that store dirty pages of user data flushed from the cache of the node, and wherein the allocation history also indicates quarantined sets of physical blocks that are no longer allocated to the node and are not currently being used to provide non-volatile data storage to cache flush operations that store dirty pages of user data flushed from the cache of the node; and

processing requests from the nodes of the multi-node data storage system for allocation of sets of physical blocks for storing dirty pages of user data flushed from their caches by reading the allocation histories maintained by the nodes of the multi-node data storage system, and preventing allocation of sets of physical blocks that are indicated as non-quarantined by any of the allocation histories, and also preventing allocation of sets of physical blocks that are indicated as quarantined by any of the allocation histories.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 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 060333/0106 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 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 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 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 060332/0864 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2020
From: ARMANGAU, PHILIPPE; VANKAMAMIDI, VAMSI K.; CARAM, BRUCE E.; KARRI, AJAY
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053606/0052 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
Cited By (2)
US 12,468,458 US 12,505,008