IP Library › Granted Patent US 10,936,522
Granted Patent B1
US 10,936,522 · App. 16/587,533 · Granted Mar 2, 2021

Performing input-output multi-pathing from user space

Inventors: Md Haris Iqbal (Kolkata, IN); Kundan Kumar (Bangalore, IN); Sanjib Mallick (Bangalore, IN)
Assignee: EMC IP Holding Company LLC
G06F13/4027G06F13/1668
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,936,522
App. No.
16/587,533
Filed
Sep 30, 2019
Granted
Mar 2, 2021
Kind
B1
Art Unit
2181
USPC
710/5
Abstract

An apparatus comprises a host device configured to communicate over a network with a storage system comprising a plurality of storage devices. The host device is configured to implement a multi-path input-output driver for delivery of input-output operations from the host device to the storage system over the network. The multi-path input-output driver is configured to perform, in user space of the host device, discovery of paths to logical storage volumes of the storage system, to identify two or more of the paths providing connection to a given one of the logical storage volumes, to generate, in the user space of the host device, a given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume, and to submit input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device.

Claims (55)

1. An apparatus comprising:

a host device configured to communicate over a network with a storage system comprising a plurality of storage devices;

the host device comprising a processor coupled to a memory configured to implement a multi-path input-output driver for delivery of input-output operations from the host device to the storage system over the network, the host device comprising a kernel space and a user space;

wherein the multi-path input-output driver is configured:

to perform, in the user space of the host device, discovery of a plurality of paths to one or more logical storage volumes of the storage system;

to identify two or more of the plurality of paths providing connection to a given one of the one or more logical storage volumes;

to generate, in the user space of the host device, a given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume; and

to submit input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device, wherein submitting the input-output operations directed to the given logical storage volume via the multi-path logical device in the user space of the host device bypasses copying of data for the submitted input-output operations from the user space of the host device to the kernel space of the host device.

2. The apparatus of claim 1 further comprising one or more additional host devices each configured to communicate over the network with the storage system and wherein each additional host device comprises a multi-path input-output driver configured to control delivery of input-output operations from that host device to the storage system over selected ones of a plurality of paths through the network.

3. The apparatus of claim 1 wherein the storage devices comprise respective ones of the one or more logical storage volumes of the storage system.

4. The apparatus of claim 1 wherein performing the discovery of the plurality of paths comprises utilizing user space host interfaces to establish connection between the host device and a front end of a storage array of the storage system hosting the one or more logical storage volumes.

5. The apparatus of claim 1 wherein identifying the two or more paths providing connection to the given logical storage volume comprises:

sending a command over each of the plurality of paths for a unique identifier of its associated logical storage volume; and

identifying ones of the paths returning a given unique identifier associated with the given logical storage volume as the two or more paths providing connection to the given logical storage volume.

6. The apparatus of claim 5 wherein the given unique identifier associated with the given logical storage volume comprises a Namespace Globally Unique Identifier (NGUID) for the given logical storage volume.

7. The apparatus of claim 1 wherein generating the given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume comprises:

forming, in a block device layer in the user space of the host device, a block device for each of the identified two or more paths providing connection to the given logical storage volume, the block device layer providing an application programming interface for implementing the block devices to interface with the given logical storage volume; and

creating a given multi-path pseudodevice as a collection of the block devices for each of the identified two or more paths providing connection to the given logical storage volume.

8. The apparatus of claim 7 wherein the given multi-path pseudodevice comprises a data structure specifying:

a multi-path identifier for the given multi-path pseudodevice;

a unique identifier of the given logical storage volume; and

identifiers of the block devices formed for each of the identified two or more paths providing connection to the given logical storage volume.

9. The apparatus of claim 1 wherein the given multi-path logical device provides multi-pathing functionality for applications running in the user space of the host device independent of a transport protocol utilized by the identified two or more paths providing connection to the given logical storage volume.

10. The apparatus of claim 1 wherein submitting the input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device comprises bypassing the kernel space of the host device.

11. The apparatus of claim 10 wherein bypassing the kernel space of the host device comprises providing the data of the submitted input-output operations directly to the storage system over at least one of the identified two or more paths providing connection to the given logical storage volume via at least one of the plurality of communication adapters.

12. The apparatus of claim 1 wherein the host device is further configured:

to identify two or more of the plurality of paths providing connection to an additional one of the one or more logical storage volumes;

to generate, in the user space of the host device, an additional multi-path logical device grouping the identified two or more paths providing connection to the additional logical storage volume; and

to submit input-output operations directed to the given logical storage volume via the additional multi-path logical device in the user space of the host device.

13. The apparatus of claim 1 wherein submitting the input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device comprises utilizing the given multi-path logical device to provide load balancing across the identified two or more paths providing connection to the given logical storage volume.

14. The apparatus of claim 1 wherein submitting the input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device comprises utilizing the given multi-path logical device to provide input-output failover by re-routing a given input-output operation from a failed one of the identified two or more paths providing connection to the given logical storage volume to an alive one of the identified two or more paths providing connection to the given logical storage volume.

15. A method comprising:

performing, by a multi-path input-output driver implemented by a host device configured to communicate over a network with a storage system comprising a plurality of storage devices, discovery of a plurality of paths to one or more logical storage volumes of the storage system, the host device comprising a kernel space and a user space;

identifying, by the multi-path input-output driver, two or more of the plurality of paths providing connection to a given one of the one or more logical storage volumes;

generating, by the multi-path input-output driver in the user space of the host device, a given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume; and

submitting, by the multi-path input-output driver, input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device, wherein submitting the input-output operations directed to the given logical storage volume via the multi-path logical device in the user space of the host device bypasses copying of data for the submitted input-output operations from the user space of the host device to the kernel space of the host device.

16. The method of claim 15 wherein generating the given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume comprises:

forming, in a block device layer in the user space of the host device, a block device for each of the identified two or more paths providing connection to the given logical storage volume, the block device layer providing an application programming interface for implementing the block devices to interface with the given logical storage volume; and

creating a given multi-path pseudodevice as a collection of the block devices for each of the identified two or more paths providing connection to the given logical storage volume.

17. The method of claim 16 wherein the given multi-path pseudodevice comprises a data structure specifying:

a multi-path identifier for the given multi-path pseudodevice;

a unique identifier of the given logical storage volume; and

identifiers of the block devices formed for each of the identified two or more paths providing connection to the given logical storage volume.

18. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by a multi-path input-output driver implemented by a host device configured to communicate over a network with a storage system comprising a plurality of storage devices, causes the multi-path input-output driver:

to perform, in a user space of the host device, discovery of a plurality of paths to one or more logical storage volumes of the storage system, the host device comprising a kernel space and the user space;

to identify two or more of the plurality of paths providing connection to a given one of the one or more logical storage volumes;

to generate, in the user space of the host device, a given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume; and

to submit input-output operations directed to the given logical storage volume via the given multi-path logical device in the user space of the host device, wherein submitting the input-output operations directed to the given logical storage volume via the multi-path logical device in the user space of the host device bypasses copying of data for the submitted input-output operations from the user space of the host device to the kernel space of the host device.

19. The computer program product of claim 18 wherein generating the given multi-path logical device grouping the identified two or more paths providing connection to the given logical storage volume comprises:

forming, in a block device layer in the user space of the host device, a block device for each of the identified two or more paths providing connection to the given logical storage volume, the block device layer providing an application programming interface for implementing the block devices to interface with the given logical storage volume; and

creating a given multi-path pseudodevice as a collection of the block devices for each of the identified two or more paths providing connection to the given logical storage volume.

20. The computer program product of claim 19 wherein the given multi-path pseudodevice comprises a data structure specifying:

a multi-path identifier for the given multi-path pseudodevice;

a unique identifier of the given logical storage volume; and

identifiers of the block devices formed for each of the identified two or more paths providing connection to the given logical storage volume.

Assignments (9)
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 (051302/0528) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
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 AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
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 Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2019
From: IQBAL, MD HARIS; KUMAR, KUNDAN; MALLICK, SANJIB
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050564/0958 →
Cited By (1)
US 12,695,608