IP Library Granted Patent US 9,819,739
Granted Patent B2
US 9,819,739 · App. 14/496,916 · Granted Nov 14, 2017

Systems and methods for supporting hot plugging of remote storage devices accessed over a network via NVME controller

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 9,819,739
App. No.
14/496,916
Granted
Nov 14, 2017
Kind
B2
Abstract

A new approach is proposed that contemplates systems and methods to support hot plugging and/or unplugging one or more of remote storage devices virtualized as extensible/flexible storages and NVMe namespace(s) via an NVMe controller during operation. First, the NVMe controller virtualizes and presents a set of remote storage devices to one or more VMs running on a host attached to the NVMe controller as logical volumes in the NVMe namespace(s) so that each of the VMs running on the host can access these remote storage devices to perform read/write operations as if they were local storage devices. When the one or more remote storage devices are added to or removed from the set of remote storage devices based on storage space needs of the VMs, the NVMe controller updates the logical volumes in the NVMe namespace(s) accordingly and enables these remote storage devices to be hot plugged or unplugged from the plurality of remote storage devices at runtime without requiring shutting down and restarting any of the VMs, the host, and/or the NVMe controller. The VMs may then perform read/write operations on the NVMe namespace(s) updated to reflect the changes in the configuration of the set of remote storage devices dynamically without any interruption.

Claims (63)

1. A system to support hot plugging of virtualized remote storage devices, comprising:

a physical NVMe controller having one or more processors, which in operation, is configured to:

create and map one or more logical volumes in one or more local NVMe namespaces to a set of remote storage devices over a network via the NVMe controller following a storage network protocol, where the logical volumes mapped to the remote storage devices are accessible by one or more virtual machines (VMs) running on a host over the network via the NVMe controller as if they were local storage volumes coupled to the NVMe controller;

monitor configuration of the set of remote storage devices accessible over the network for any addition to or removal from the set of remote storage devices;

update the logical volumes in the NVMe namespaces mapped to the set of remote storage devices over the network accordingly when one or more remote storage devices are added to or removed from the set of remote storage devices at runtime;

present the logical volumes in the NVMe namespaces updated to reflect the added or removed remote storage devices to the VMs running on the host;

enable the VMs running on the host to perform one or more read and/or write operations on the updated logical volumes without the host and/or the NVMe controller needing to be shut down or restarted.

2. The system of claim 1 , wherein:

the host of the VMs is an x86 or ARM server.

3. The system of claim 1 , wherein:

the logical volumes further include storage devices attached to the physical NVMe controller locally.

4. The system of claim 1 , wherein:

the VMs run independently on the host and are isolated from each other so that one VM cannot access the data and/or communication of any other VMs running on the same host.

5. The system of claim 1 , wherein:

the storage network protocol is Internet Small Computer System Interface (iSCSI).

6. The system of claim 1 , wherein:

multiple of the plurality of VMs are enabled to access the same logical volume and each logical volume is enabled to be shared among the multiple VMs.

7. The system of claim 1 , wherein:

the NVMe controller is configured to perform the mapping on the remote storage devices over the network transparent to the VMs.

8. The system of claim 1 , wherein:

the NVMe controller is configured to monitor and collect volume information of the added or moved remote storage devices over the network.

9. The system of claim 1 , wherein:

the NVMe controller is configured to monitor access to the logical volumes and namespaces mapped to the remote storage devices that are in active use by the VMs running on the host to prioritize data traffic to/from those remote storage devices so that the VMs have ready access to these logical volumes and namespaces.

10. The system of claim 9 , wherein:

the NVMe controller is configured to pre-fetch data from a volume of the remote storage devices that are most frequently accessed by the VMs to a cache locally associated with the NVMe controller in anticipation of the next read operation by the VMs.

11. The system of claim 1 , wherein:

the NVMe controller is configured to save context of the logical volume and the namespace previously used by one of the VMs for future use and make a new logical volume and namespace available to the VM when the VM switches to use a different logical volume or namespace.

12. The system of claim 1 , wherein:

the NVMe controller is configured to establish a lookup table that maps between the NVMe namespaces of the logical volumes and the remote physical storage volumes that are imported to the NVMe controller.

13. The system of claim 12 , wherein:

the NVMe controller is configured to maintain an inactivity timer/counter on the logical volumes and namespaces mapped to the remote storage devices and to purge one or more logical volumes and namespaces that have not been accessed by the VMs for a certain period of time from the lookup table and the logical volumes and namespaces to be presented to the VMs.

14. The system of claim 13 , wherein:

the remote storage devices mapped to the logical volumes and namespaces being purged are removed and/or hot-unplugged from the set of the remote storage devices.

15. The system of claim 1 , wherein:

the NVMe controller is configured to notify the VMs accessing logical volumes in the namespaces mapped to one or more of the remote storage devices that one or more of the remote storage devices are unreachable over the network and to update the logical volumes in the namespaces to remove the volumes mapped to the unreachable remote storage devices.

16. A computer-implemented method to support hot plugging of virtualized remote storage devices, comprising:

creating and mapping one or more logical volumes in one or more local NVMe namespaces to a set of remote storage devices over a network via an NVMe controller, where the logical volumes mapped to the remote storage devices are accessible by one or more virtual machines (VMs) running on a host over the network via the NVMe controller as if they were local storage volumes coupled to the NVMe controller;

monitoring configuration of the set of remote storage devices accessible over the network for any addition to or removal from the set of remote storage devices;

updating the logical volumes in the NVMe namespaces mapped to the set of remote storage devices over the network accordingly when one or more remote storage devices are added to or removed from the set of remote storage devices at runtime;

presenting the logical volumes in the NVMe namespaces updated to reflect the added or removed remote storage devices to the VMs running on the host;

enabling the VMs running on the host to perform one or more read and/or write operations on the updated logical volumes without the host and/or the NVMe controller needing to be shut down or restarted.

17. The method of claim 16 , further comprising:

enabling the VMs to run independently on the host and isolating the VMs from each other so that one VM cannot access the data and/or communication of any other VMs running on the same host.

18. The method of claim 16 , further comprising:

enabling multiple of the plurality of VMs to access the same logical volume and each logical volume to be shared among the multiple VMs.

19. The method of claim 16 , further comprising:

performing the mapping on the remote storage devices over the network transparent to the VMs.

20. The method of claim 16 , further comprising:

monitoring and collecting volume information of the added or moved remote storage devices over the network.

21. The method of claim 16 , further comprising:

monitoring access to the logical volumes and namespaces mapped to the remote storage devices that are in active use by the VMs running on the host to prioritize data traffic to/from those remote storage devices so that the VMs have ready access to these logical volumes and namespaces.

22. The method of claim 21 , further comprising:

pre-fetching data from a volume of the remote storage devices that are most frequently accessed by the VMs to a cache locally associated with the NVMe controller in anticipation of the next read operation by the VMs.

23. The method of claim 16 , further comprising:

saving context of the logical volume and the namespace previously used by one of the VMs for future use and make a new logical volume and namespace available to the VM when the VM switches to use a different logical volume or namespace.

24. The method of claim 16 , further comprising:

establishing a lookup table that maps between the NVMe namespaces of the logical volumes and the remote physical storage volumes.

25. The method of claim 24 , further comprising:

maintaining an inactivity timer/counter on the logical volumes and namespaces mapped to the remote storage devices and to purge one or more logical volumes and namespaces that have not been accessed by the VMs for a certain period of time from the lookup table and the logical volumes and namespaces to be presented to the VMs.

26. The method of claim 25 , further comprising:

removing and/or hot-unplugging the remote storage devices mapped to the logical volumes and namespaces being purged from the set of the remote storage devices.

27. The method of claim 16 , further comprising:

notifying the VMs accessing logical volumes in the namespaces mapped to one or more of the remote storage devices that one or more of the remote storage devices are unreachable over the network and to update the logical volumes in the namespaces to remove the volumes mapped to the unreachable remote storage devices.

Assignments (13)
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT RECORDED AT REEL 058948, FRAME 0265 Recorded Jul 1, 2025
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: EVERI HOLDINGS INC.
Reel/Frame 071791/0236 →
PATENT SECURITY AGREEMENT (SHORT-FORM) Recorded Feb 2, 2022
From: EVERI HOLDINGS INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 058948/0265 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME AND THE FIRST ASSIGNEE'S NAME PREVIOUSLY RECORDED AT REEL: 057111 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 13, 2021
From: JEFFERIES FINANCE LLC
To: EVERI PAYMENTS INC.; EVERI HOLDINGS INC.; EVERI GAMES HOLDING INC.; GCA MTL, LLC; CENTRAL CREDIT, LLC; EVERI INTERACTIVE LLC; EVERI GAMES INC.
Reel/Frame 057184/0244 →
RELEASE OF SECURITY INTEREST Recorded Aug 6, 2021
From: JEFFERIES FIANANCE LLC
To: EVERY PAYMENTS INC.; EVERI HOLDINGS INC.; EVERI GAMES HOLDING INC.; GCA MTL, LLC; CENTRAL CREDIT, LLC; EVERI INTERACTIVE LLC; EVERI GAMES INC.
Reel/Frame 057111/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
PATENT SECURITY AGREEMENT Recorded Apr 24, 2020
From: EVERI HOLDINGS INC.; EVERI PAYMENTS INC.; GCA MTL, LLC; CENTRAL CREDIT, LLC; EVERI GAMES INC.; EVERI GAMES HOLDING INC.; EVERI INTERACTIVE LLC
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 052494/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 1, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047171/0845 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2017
From: HUSSAIN, MUHAMMAD RAGHIB; MURGAI, VISHAL; PANICKER, MANOJKUMAR; MASOOD, FAISAL; FOLSOM, BRIAN; KESSLER, RICHARD EUGENE
To: CAVIUM, INC.
Reel/Frame 042762/0111 →
RELEASE OF SECURITY INTEREST Recorded May 10, 2017
From: BANK OF AMERICA, N.A.
To: EVERI PAYMENTS INC.; EVERI GAMES INC.
Reel/Frame 042321/0972 →
RELEASE OF SECURITY INTEREST Recorded May 9, 2017
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL AGENT
To: EVERI PAYMENTS INC.; EVERI GAMES INC.
Reel/Frame 042434/0006 →
SECURITY INTEREST Recorded Apr 5, 2016
From: EVERI PAYMENTS INC.; EVERI GAMES INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 038196/0182 →
SECURITY INTEREST Recorded Apr 5, 2016
From: EVERI PAYMENTS INC.; EVERI GAMES INC.
To: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL AGENT
Reel/Frame 038196/0383 →