IP Library Granted Patent US 11,934,679
Granted Patent B2
US 11,934,679 · App. 17/076,141 · Granted Mar 19, 2024

System and method for segmenting volumes across a multi-node storage system

Inventors: David Meiri (Somerville, MA); Vinay G. Rao (Bangalore, IN); Sanjib Mallick (Bangalore, IN)
Assignee: EMC IP Holding Company, LLC
G06F3/0644G06F3/0611G06F3/0619G06F3/0629G06F3/067G06F3/0683
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,934,679
App. No.
17/076,141
Granted
Mar 19, 2024
Kind
B2
Abstract

A method, computer program product, and computing system for dividing a volume into a plurality of segments. The plurality of segments may be assigned to a plurality of nodes of a multi-node storage system. One or more input/output (IO) request paths for accessing the plurality of segments may be defined based upon, at least in part, assigning the plurality of segments to the plurality of nodes.

Claims (65)

1. A computer-implemented method, executed on a computing device, comprising:

dividing a volume into a plurality of segments;

assigning the plurality of segments to a plurality of nodes of a multi-node storage system, thus defining one or more assigned nodes and one or more unassigned nodes for each segment of the plurality of segments; and

defining one or more input/output (IO) request paths for accessing the plurality of segments based upon, at least in part, assigning the plurality of segments to the plurality of nodes and a type of data of an IO request, wherein the type of data of the IO request includes one or more of an IO request referencing meta data of a particular segment and an IO request referencing user data of a particular segment, wherein defining the one or more IO request paths for accessing the plurality of segments includes defining one or more primary IO request paths for accessing each segment from the assigned node and defining one or more non-primary IO request paths for accessing each segment from at least one unassigned node of the plurality of nodes, wherein the one or more primary IO request paths include one or more IO request paths from a host initiating the IO request to the assigned node, wherein the one or more non-primary IO request paths include one or more IO request paths from the host initiating the IO request to the unassigned node and from the unassigned node to the assigned node.

2. The computer-implemented method of claim 1 , further comprising one or more of:

storing, at a node, metadata associated with one or more segments assigned to that node; and

caching, at the node, user data associated with the one or more segments assigned to that node.

3. The computer-implemented method of claim 1 , further comprising:

receiving the IO request referencing at least one segment of the plurality of segments;

determining a node to which the at least one segment is assigned; and

sending the IO request to the node to which the at least one segment is assigned via the primary IO request path to the node to which the at least one segment is assigned.

4. The computer-implemented method of claim 3 , wherein the IO request references a first segment assigned to a first node and a second segment assigned to a second node.

5. The computer-implemented method of claim 4 , further comprising:

dividing the IO request into a first portion referencing the first segment assigned to the first node and a second portion referencing the second segment assigned to the second node;

sending the first portion of the IO request to the first node via the primary IO request path defined for the first portion of the IO request; and

sending the second portion of the IO request to the second node via the primary IO request path defined for the second portion of the IO request.

6. The computer-implemented method of claim 2 , storing, at a node, the metadata associated with the one or more segments assigned to the node includes:

storing, on each node, a copy of the metadata associated with the one or more segments assigned to each other node;

generating a shared lock for each page of the metadata associated with the one or more segments; and

providing, to the node to which the one or more segments are assigned, ownership of the shared lock for each page of the metadata associated with the one or more segments assigned to the node.

7. The computer-implemented method of claim 1 , further comprising:

identifying a node failure within the multi-node storage system, thus defining at least one failed node; and

reassigning one or more segments assigned to the at least one failed node to one or more surviving nodes.

8. A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:

dividing a volume into a plurality of segments;

assigning the plurality of segments to a plurality of nodes of a multi-node storage system, thus defining one or more assigned nodes and one or more unassigned nodes for each segment of the plurality of segments; and

defining one or more input/output (IO) request paths for accessing the plurality of segments based upon, at least in part, assigning the plurality of segments to the plurality of nodes and a type of data of an IO request, wherein the type of data of the IO request includes one or more of an IO request referencing meta data of a particular segment and an IO request referencing user data of a particular segment, wherein defining the one or more IO request paths for accessing the plurality of segments includes defining one or more primary IO request paths for accessing each segment from the assigned node and defining one or more non-primary IO request paths for accessing each segment from at least one unassigned node of the plurality of nodes, wherein the one or more primary IO request paths include one or more IO request paths from a host initiating the IO request to the assigned node, wherein the one or more non-primary IO request paths include one or more IO request paths from the host initiating the IO request to the unassigned node and from the unassigned node to the assigned node.

9. The computer program product of claim 8 , wherein the operations further comprise one or more of:

storing, at a node, metadata associated with one or more segments assigned to that node; and

caching, at the node, user data associated with the one or more segments assigned to that node.

10. The computer program product of claim 9 , wherein the operations further comprise:

receiving the IO request referencing at least one segment of the plurality of segments;

determining a node to which the at least one segment is assigned; and

sending the IO request to the node to which the at least one segment is assigned via the primary IO request path to the node to which the at least one segment is assigned.

11. The computer program product of claim 10 , wherein the IO request references a first segment assigned to a first node and a second segment assigned to a second node.

12. The computer program product of claim 11 , wherein the operations further comprise:

dividing the IO request into a first portion referencing the first segment assigned to the first node and a second portion referencing the second segment assigned to the second node;

sending the first portion of the IO request to the first node via the primary IO request path defined for the first portion of the IO request; and

sending the second portion of the IO request to the second node via the primary IO request path defined for the second portion of the IO request.

13. The computer program product of claim 9 , storing, at the node, the metadata associated with the one or more segments assigned to the node includes:

storing, on each node, a copy of the metadata associated with the one or more segments assigned to each other node;

generating a shared lock for each page of the metadata associated with the one or more segments; and

providing, to the node to which the one or more segments are assigned, ownership of the shared lock for each page of the metadata associated with the one or more segments assigned to the node.

14. The computer program product of claim 8 , wherein the operations further comprise:

identifying a node failure within the multi-node storage system, thus defining at least one failed node; and

reassigning one or more segments assigned to the at least one failed node to one or more surviving nodes.

15. A computing system comprising:

a memory; and

a processor configured to divide a volume into a plurality of segments, wherein the processor is further configured to assign the plurality of segments to a plurality of nodes of a multi-node storage system, thus defining one or more assigned nodes and one or more unassigned nodes for each segment of the plurality of segments, and wherein the processor is further configured to define one or more input/output (IO) request paths for accessing the plurality of segments based upon, at least in part, assigning the plurality of segments to the plurality of nodes and a type of data of an IO request, wherein the type of data of the IO request includes one or more of an IO request referencing meta data of a particular segment and an IO request referencing user data of a particular segment, wherein defining the one or more IO request paths for accessing the plurality of segments includes defining one or more primary IO request paths for accessing each segment from the assigned node and defining one or more non-primary IO request paths for accessing each segment from at least one unassigned node of the plurality of nodes, wherein the one or more primary IO request paths include one or more IO request paths from a host initiating the IO request to the assigned node, wherein the one or more non-primary IO request paths include one or more IO request paths from the host initiating the IO request to the unassigned node and from the unassigned node to the assigned node.

16. The computing system of claim 15 , wherein the processor is further configured to one or more of:

store, at a node, metadata associated with one or more segments assigned to that node; and

cache, at the node, user data associated with the one or more segments assigned to that node.

17. The computing system of claim 16 , wherein the processor is further configured to:

receive the IO request referencing at least one segment of the plurality of segments;

determine a node to which the at least one segment is assigned; and

sending the IO request to the node to which the at least one segment is assigned via the primary IO request path to the node to which the at least one segment is assigned.

18. The computing system of claim 17 , wherein the IO request references a first segment assigned to a first node and a second segment assigned to a second node.

19. The computing system of claim 18 , wherein the processor is further configured to:

divide the IO request into a first portion referencing the first segment assigned to the first node and a second portion referencing the second segment assigned to the second node;

sending the first portion of the IO request to the first node via the primary IO request path defined for the first portion of the IO request; and

sending the second portion of the IO request to the second node via the primary IO request path defined for the second portion of the IO request.

20. The computing system of claim 16 , storing, at a node, the primary copy of the metadata associated with the one or more segments assigned to the node includes:

store, on each node, a copy of the metadata associated with the one or more segments assigned to each other node;

generate a shared lock for each page of the metadata associated with the one or more segments; and

provide, to the node to which the one or more segments are assigned, ownership of the shared lock for each page of the metadata associated with the one or more segments assigned to the node.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0523) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0664 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0434) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0740 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0609) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0570 →
RELEASE OF SECURITY INTEREST AT REEL 054591 FRAME 0471 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0463 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 054475/0609 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0434 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0523 →
SECURITY AGREEMENT Recorded Nov 13, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 054591/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2020
From: MEIRI, DAVID; RAO, VINAY G.; MALLICK, SANJIB
To: EMC IP HOLDING COMPANY, LLC
Reel/Frame 054128/0033 →