IP Library Granted Patent US 10,656,877
Granted Patent B2
US 10,656,877 · App. 15/831,744 · Granted May 19, 2020

Virtual storage controller

Inventors: Felipe Franciosi (San Jose, CA); Miao Cui (New York, NY)
Assignee: NUTANIX, INC.
G06F3/0664G06F3/067G06F3/0607G06F3/0613G06F3/0661G06F9/45533G06F9/45558G06F2009/45579
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,656,877
App. No.
15/831,744
Filed
Dec 5, 2017
Granted
May 19, 2020
Kind
B2
Art Unit
2199
USPC
718/1
Abstract

An exemplary embodiment disclosed herein is a method including a virtual storage controller receiving an input/output (I/O) command using a native drive communications protocol from a software application on a user virtual machine running on the host machine; determining whether a local service virtual machine is unresponsive to the virtual storage controller; translating the I/O command from the native drive communications protocol to an IP-based storage communications protocol to create a translated I/O command, in response to the local service virtual machine being unresponsive to the virtual storage controller; sending the translated I/O command to a remote service virtual machine, wherein the remote service virtual machine is configured to send the translated I/O command to a local storage and receive a response from the local storage; and receiving the response from the remote service virtual machine.

Claims (46)

1. A method comprising:

by a virtual storage controller running on a host machine,

receiving an input/output (I/O) command using a native drive communications protocol from a software application on a user virtual machine running on the host machine;

determining whether a local service virtual machine on a same node as the virtual storage controller is unresponsive to the virtual storage controller by:

pinging the local service virtual machine; and

detecting whether the local service virtual machine fails to respond to the virtual storage controller within a pre-determined amount of time after pinging by the virtual storage controller;

embedding an Internet Protocol (IP)-based storage communications protocol in the I/O command to create an embedded I/O command, in response to the local service virtual machine being unresponsive to the virtual storage controller;

sending the embedded I/O command to a remote service virtual machine, wherein the remote service virtual machine is configured to send the embedded I/O command to a local storage and receive a response from the local storage; and

receiving the response from the remote service virtual machine.

2. The method of claim 1 , wherein the embedded I/O command comprises a read command, and wherein the response comprises an acknowledgement of a receipt of the embedded I/O command, a confirmation of a successful read operation, an error message, or data retrieval.

3. The method of claim 1 , wherein the embedded I/O command comprises a write command, and wherein the response comprises an acknowledgement of a receipt of the embedded I/O command, a confirmation of a successful write operation, an error message, or data retrieval.

4. The method of claim 1 , wherein the embedded I/O command is a command to test whether a storage device is ready, format the storage device, read block limits for the storage device, reassign blocks for the storage device, verify data, copy data, erase data, determine or retrieve diagnostic data for the storage device, verify data integrity via data on the storage device, retrieve information about the storage device, initiate repair, overwrite data, or encrypt data.

5. The method of claim 1 , wherein the native drive communications protocol is a Small Computer System Interface (SCSI) protocol.

6. The method of claim 1 , wherein the IP-based storage communications protocol is an Internet SCSI (iSCSI) protocol.

7. The method of claim 1 , wherein receiving, by the virtual storage controller, the I/O command from the software application on the user virtual machine, is via a hypervisor.

8. The method of claim 1 , wherein the software application is an operating system.

9. An apparatus comprising a processor having programmed instructions to:

receive an input/output (I/O) command at a virtual storage controller from a software application on a single user virtual machine to:

determine whether a first service virtual machine on a same node as the virtual storage controller is unresponsive to the apparatus;

ping the first service virtual machine;

detect whether the first service virtual machine fails to respond to the apparatus within a pre-determined amount of time after pinging by the apparatus;

embed an Internet Protocol (IP)-based storage communications protocol in the I/O command to create an embedded I/O command, in response to the first service virtual machine being unresponsive to the apparatus;

send the embedded I/O command to a second service virtual machine, wherein the second service virtual machine is configured to send the embedded I/O command to a second local storage and receive a response from the second local storage and

receive the response from the second service virtual machine.

10. The apparatus of claim 9 , wherein the embedded I/O command comprises a read command, and wherein the response comprises an acknowledgement of a receipt of the embedded I/O command, a confirmation of a successful read operation, an error message, or data retrieval.

11. The apparatus of claim 9 , wherein the embedded I/O command comprises a write command, and wherein the response comprises an acknowledgement of a receipt of the embedded I/O command, a confirmation of a successful write operation, an error message, or data retrieval.

12. The apparatus of claim 9 , wherein the embedded I/O command is a command to test whether a storage device is ready, format the storage device, read block limits for the storage device, reassign blocks for the storage device, verify data, copy data, erase data, determine or retrieve diagnostic data for the storage device, verify data integrity via data on the storage device, retrieve information about the storage device, initiate repair, overwrite data, or encrypt data.

13. The apparatus of claim 9 , wherein the native drive communications protocol is a Small Computer System Interface (SCSI) protocol.

14. The apparatus of claim 9 , wherein the IP-based storage communications protocol is an Internet SCSI (i SCSI) protocol.

15. The apparatus of claim 9 , the processor having further programmed instructions to receive the I/O command from the software application on the single user virtual machine via a first hypervisor.

16. The apparatus of claim 9 , wherein the software application is an operating system.

17. A non-transitory computer-readable storage medium having instructions stored thereon that, upon execution by a computing device, causes the computing device to perform operations comprising:

receiving an I/O command using a native drive communications protocol from a software application on a user virtual machine running on a host machine having a virtual storage controller;

determining whether a local service virtual machine on a same node as the virtual storage controller is unresponsive to a virtual storage controller on the host machine by:

pinging the local service virtual machine; and

detecting whether the local service virtual machine has failed to respond to the virtual storage controller within a pre-determined amount of time after pinging by the virtual storage controller;

embedding an Internet Protocol (IP)-based storage communications protocol in the I/O command to create an embedded I/O command, in response to the local service virtual machine being unresponsive to the virtual storage controller;

sending the embedded I/O command to a remote service virtual machine, wherein the remote service virtual machine is configured to send the embedded I/O command to a local storage and receive a response from the local storage; and

receiving the response from the remote service virtual machine.

18. The storage medium of claim 17 , wherein the embedded I/O command comprises a read command, and wherein the response comprises an acknowledgement of a receipt of the embedded I/O command, a confirmation of a successful read operation, an error message, or data retrieval.

19. The storage medium of claim 17 , wherein the embedded I/O command comprises a write command, and wherein the response comprises an acknowledgement of a receipt of the embedded I/O command, a confirmation of a successful write operation, an error message, or data retrieval.

20. The storage medium of claim 17 , wherein the embedded I/O command is a command to test whether a storage device is ready, format the storage device, read block limits for the storage device, reassign blocks for the storage device, verify data, copy data, erase data, determine or retrieve diagnostic data for the storage device, verify data integrity via data on the storage device, retrieve information about the storage device, initiate repair, overwrite data, or encrypt data.

21. The storage medium of claim 17 , wherein the native drive communications protocol is a Small Computer System Interface (SCSI) protocol.

22. The storage medium of claim 17 , wherein the IP-based storage communications protocol is an Internet SCSI (iSCSI) protocol.

23. The storage medium of claim 17 , wherein receiving, by the virtual storage controller, the I/O command from the software application on the user virtual machine, is via a hypervisor.

24. The storage medium of claim 17 , wherein the software application is an operating system.

Assignments (2)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2021
From: FRANCIOSI, FELIPE; CUI, MIAO
To: NUTANIX, INC.
Reel/Frame 054842/0074 →
Continuity (2)
Provisional Application 62430764 · Dec 6, 2016
Related Publication 20180157444A1 · Jun 7, 2018
Cited By (1)
US 12,306,775