US12579065B2ActiveUtilityA1
Lightweight kernel driver for virtualized storage
Est. expiryDec 7, 2042(~16.4 yrs left)· nominal 20-yr term from priority
G06F 3/067G06F 3/0635G06F 3/061G06F 13/1668G06F 2212/657G06F 12/08
60
PatentIndex Score
0
Cited by
14
References
20
Claims
Abstract
A routing table is requested from a storage device operatively coupled to the computing device, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of the storage device. An input/output (I/O) request is received from an application executing on the computing device, the I/O request comprising the virtual storage address. A modified I/O request is transmitted to the storage device based on the mapping of the routing table entry.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method comprising:
requesting, by a driver within a kernel space of an operating system (OS) of a computing device, a routing table from a storage system comprising a plurality of storage devices, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of a storage device in the plurality of storage devices; receiving, by the driver within the kernel space of the OS, the routing table from the storage device responsive to requesting the routing table; receiving an input/output (I/O) request from an application executing within a user space of the OS, the I/O request comprising the virtual storage address; generating, by the driver within the kernel space of the OS, a modified I/O request including the destination storage address based on the routing table entry mapping the virtual storage address to the destination storage address; and transmitting, by the driver within the kernel space of the OS, the modified I/O request to the storage device of the storage system based on the destination storage address included in the modified I/O request.
2 . The method of claim 1 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the method further comprises:
receiving an error response to the modified I/O request; transmitting a request for an updated routing table to the first storage device; and receiving a routing table update from the first storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of a second storage device.
3 . The method of claim 2 , further comprising:
retransmitting the modified I/O request to the second storage device based on the mapping of the second routing table entry.
4 . The method of claim 1 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the method further comprises:
determining that the first storage device is no longer available; transmitting a request for an updated routing table to a second storage device; and receiving a routing table update from the second storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of the second storage device.
5 . The method of claim 1 , wherein the routing table is a copy of a second routing table maintained by the storage system.
6 . The method of claim 1 , wherein the application comprises a containerized application executing within a container in the user space of the OS.
7 . The method of claim 1 , wherein the method further comprises:
receiving an I/O response and an indication of an invalid route in response to the modified I/O request; transmitting the I/O response to the application executing on the computing device; transmitting a request for an updated routing table to the storage device; receiving a routing table update from the storage device; and updating the routing table based on the routing table update.
8 . A computing device comprising:
a memory; and a processing device, operatively coupled to the memory, to:
request, by a driver within a kernel space of an operating system (OS) of the computing device, a routing table from a storage system comprising a plurality of storage devices, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of a storage device in the plurality of storage devices;
receive, by the driver within the kernel space of the OS, the routing table from the storage device responsive to requesting the routing table;
receive an input/output (I/O) request from an application within a user space of the OS, the I/O request comprising the virtual storage address;
generate, by the driver within the kernel space of the OS, a modified I/O request including the destination storage address based on the routing table entry mapping the virtual storage address to the destination storage address; and
transmit, by the driver within the kernel space of the OS, the modified I/O request to the storage device of the storage system based on the destination storage address included in the modified I/O request.
9 . The computing device of claim 8 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the processing device is further to:
receive an error response to the modified I/O request; transmit a request for an updated routing table to the first storage device; and receive a routing table update from the first storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of a second storage device.
10 . The computing device of claim 9 , wherein the processing device is further to:
retransmit the modified I/O request to the second storage device based on the mapping of the second routing table entry.
11 . The computing device of claim 8 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the processing device is further to:
determine that the first storage device is no longer available; transmit a request for an updated routing table to a second storage device; and receive a routing table update from the second storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of the second storage device.
12 . The computing device of claim 8 , wherein the routing table is a copy of a second routing table maintained by the storage system.
13 . The computing device of claim 8 , wherein the application comprises a containerized application executing within a container in the user space of the OS.
14 . The computing device of claim 8 , wherein the processing device is further to:
receive an I/O response and an indication of an invalid route in response to the modified I/O request; transmit the I/O response to the application executing on the computing device; transmit a request for an updated routing table to the storage device; receive a routing table update from the storage device; and update the routing table based on the routing table update.
15 . A non-transitory computer-readable storage medium including instructions that, when executed by a processing device of a computing device, cause the processing device to:
request, by a driver within a kernel space of an operating system (OS), a routing table from a storage system comprising a plurality of storage devices, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of a storage device in the plurality of storage devices; receive, by the driver within the kernel space of the OS, the routing table from the storage device responsive to requesting the routing table; receive an input/output (I/O) request from an application executing within a user space of the OS, the I/O request comprising the virtual storage address; generate, by the driver within the kernel space of the OS, a modified I/O request including the destination storage address based on the routing table entry mapping the virtual storage address to the destination storage address; and transmit, by the driver within the kernel space of the OS, the modified I/O request to the storage device of the storage system based on the destination storage address included in the modified I/O request.
16 . The non-transitory computer-readable storage medium of claim 15 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the instructions, when executed by the processing device, cause the processing device further to:
receive an error response to the modified I/O request; transmit a request for an updated routing table to the first storage device; and receive a routing table update from the first storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of a second storage device.
17 . The non-transitory computer-readable storage medium of claim 16 , wherein the instructions, when executed by the processing device, cause the processing device further to:
retransmit the modified I/O request to the second storage device based on the mapping of the second routing table entry.
18 . The non-transitory computer-readable storage medium of claim 15 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the instructions, when executed by the processing device, cause the processing device further to:
determine that the first storage device is no longer available; transmit a request for an updated routing table to a second storage device; and receive a routing table update from the second storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of the second storage device.
19 . The non-transitory computer-readable storage medium of claim 15 , wherein the application comprises a containerized application executing within a container in the user space of the OS.
20 . The non-transitory computer-readable storage medium of claim 15 , wherein the instructions, when executed by the processing device, cause the processing device further to:
receive an I/O response and an indication of an invalid route in response to the modified I/O request; transmit the I/O response to the application executing on the computing device; transmit a request for an updated routing table to the storage device; receive a routing table update from the storage device; and update the routing table based on the routing table update.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.