Shareable virtual non-volatile storage device for a server
First Claim
1. A method of a server computing device comprising:
- receiving, by the server computing device, a server identifier (ID) from a management processor of a remote storage array comprising the management processor, a plurality of controllers, and a plurality of solid state storage devices, wherein the server ID identifies the server computing device to the remote storage array;
algorithmically determining, by the server computing device based on the server ID, a controller ID for a controller of the plurality of controllers in the remote storage array, wherein the controller having the controller ID is to perform read operations and write operations to transfer data between the server computing device and the remote storage array;
algorithmically determining, by the server computing device based on the server ID, an input/output (IO) queue ID for an IO queue to be used for reading data from the remote storage array and writing data to the remote storage array;
registering, by a driver executing on the server computing device, the server computing device to one or more storage blocks of the remote storage array;
generating, by the driver, a virtual storage device on the server computing device;
maintaining a logical mapping of the one or more storage blocks for the virtual storage device;
receiving a write request to write first data to the virtual storage device; and
transferring at least a portion of the first data from one or more data buffers of the server computing device through the controller to a shared solid state storage device of the plurality of solid state storage devices in the remote storage array without writing the first data to any internal physical drive of the server computing device, the transferring comprising;
mapping the write request to the IO queue, having the IO queue ID, that is maintained at the server computing device based on the logical mapping of the one or more storage blocks;
adding an entry for the write request to the IO queue at a next available location in the IO queue; and
notifying the controller of the entry for the write request in the IO queue.
1 Assignment
0 Petitions
Accused Products
Abstract
Disclosed are a system, a method and/or an apparatus of a shareable virtual non-volatile storage device for a server. In one embodiment, the system includes a server, a storage array, a management processor, and a switching fabric. The storage array includes a storage device coupled with a controller associated with a shared driver to receive a data request from the server at a remote location from the storage array through the switch fabric via a communication link to direct the data request to the storage device coupled with it and transmit data to the server through the switch fabric. A virtual storage device is generated in the server to enable the server to share the shared driver in the storage array with other servers through the switch fabric between the server and the storage array. The server distributes the data across the storage devices through the shared driver.
-
Citations
16 Claims
-
1. A method of a server computing device comprising:
-
receiving, by the server computing device, a server identifier (ID) from a management processor of a remote storage array comprising the management processor, a plurality of controllers, and a plurality of solid state storage devices, wherein the server ID identifies the server computing device to the remote storage array; algorithmically determining, by the server computing device based on the server ID, a controller ID for a controller of the plurality of controllers in the remote storage array, wherein the controller having the controller ID is to perform read operations and write operations to transfer data between the server computing device and the remote storage array; algorithmically determining, by the server computing device based on the server ID, an input/output (IO) queue ID for an IO queue to be used for reading data from the remote storage array and writing data to the remote storage array; registering, by a driver executing on the server computing device, the server computing device to one or more storage blocks of the remote storage array; generating, by the driver, a virtual storage device on the server computing device; maintaining a logical mapping of the one or more storage blocks for the virtual storage device; receiving a write request to write first data to the virtual storage device; and transferring at least a portion of the first data from one or more data buffers of the server computing device through the controller to a shared solid state storage device of the plurality of solid state storage devices in the remote storage array without writing the first data to any internal physical drive of the server computing device, the transferring comprising; mapping the write request to the IO queue, having the IO queue ID, that is maintained at the server computing device based on the logical mapping of the one or more storage blocks; adding an entry for the write request to the IO queue at a next available location in the IO queue; and notifying the controller of the entry for the write request in the IO queue. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory computer readable medium having instructions that, when executed by a computing device, cause the computing device to perform operations comprising:
-
receiving, by the computing device, a controller identifier (ID) from a management processor via a server management queue of the management processor, wherein the management processor is a component of a remote storage array comprising the management processor, a plurality of controllers, and a plurality of solid state storage devices (SSDs), wherein the controller ID identifies a controller of the plurality of controllers in the remote storage array, and wherein the controller having the controller ID is to perform read operations and write operations to transfer data between the server computing device and the remote storage array; receiving, from the management processor via the server management queue of the management processor, an input/output (IO) queue ID for an IO queue to be used for reading data from the remote storage array and writing data to the remote storage array; registering, by a driver executing on the computing device, the computing device to one or more storage blocks of the remote storage array; generating, by the driver, a virtual storage device on the computing device; maintaining a logical mapping of the one or more storage blocks for the virtual storage device; receiving a write request to write first data to the virtual storage device; and transferring at least a portion of the first data from one or more data buffers of the computing device through the controller to a shared solid state storage device of the plurality of solid state storage devices in the storage array without writing the first data to any internal physical drive of the server computing device, the transferring comprising; mapping the write request to the IO queue, having the IO queue ID, that is maintained at the computing device based on the logical mapping of the one or more storage blocks; adding an entry for the write request to the IO queue at a next available location in the IO queue; and notifying the controller of the entry for the write request in the IO queue. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A server computing device comprising:
-
one or more data buffers; and a processor coupled to the one or more buffers, wherein the processor is to; receive a server identifier (ID) from a management processor of a remote storage array comprising the management processor, a plurality of controllers, and a plurality of solid state storage devices, wherein the server ID identifies the server computing device to the remote storage array; algorithmically determine, based on the server ID, a controller ID for a controller of the plurality of controllers in the remote storage array, wherein the controller having the controller ID is to perform read operations and write operations to transfer data between the server computing device and the remote storage array; algorithmically determine, based on the server ID, an input/output (IO) queue ID for an IO queue to be used for reading data from the remote storage array and writing data to the remote storage array; register the server computing device to one or more storage blocks of the remote storage array; generate a virtual storage device on the server computing device; maintain a logical mapping of the one or more storage blocks for the virtual storage device; receive a write request to write first data to the virtual storage device; and transfer at least a portion of the first data from the one or more data buffers through the controller to a shared solid state storage device of the plurality of solid state storage devices in the storage array without writing the first data to any internal physical drive of the server computing device, wherein to transfer the portion of the first data the processor is to; map the write request to the IO queue, having the IO queue ID, that is maintained at the server computing device based on the logical mapping of the one or more storage blocks; add an entry for the write request to the IO queue at a next available location in the IO queue; and notify the controller of the entry for the write request in the IO queue. - View Dependent Claims (14, 15, 16)
-
Specification