US 11,755,438 B2
Automatic failover of a software-defined storage controller to handle input-output operations to and from an assigned namespace on a non-volatile memory device
David W. Cosby, Raleigh, NC (US); Theodore B. Vojnovich, Raleigh, NC (US); Manjunatha Hebbar, Bangalore (IN); Anthony C. Yu, Cary, NC (US); and Patrick L. Caporale, Cary, NC (US)
Filed by Lenovo Enterprise Solutions (Singapore) Pte. Ltd., Singapore (SG)
Filed on Mar. 31, 2021, as Appl. No. 17/219,212.
Prior Publication US 2022/0318106 A1, Oct. 6, 2022
Int. Cl. G06F 11/20 (2006.01); G06F 13/40 (2006.01); G06F 3/06 (2006.01)
CPC G06F 11/2092 (2013.01) [G06F 3/061 (2013.01); G06F 3/0659 (2013.01); G06F 3/0688 (2013.01); G06F 13/4027 (2013.01); G06F 2201/85 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computer program product comprising a non-transitory computer readable medium and non-transitory program instructions embodied therein, the program instructions being configured to be executable by a processor to cause the processor to perform operations comprising:
causing a non-volatile memory device to establish a plurality of namespaces including a first namespace and a second namespace, wherein each namespace is uniquely associated with at least a specific portion of a storage space of the non-volatile memory device;
assigning, for each of the plurality of namespaces, a host to access the namespace, including assigning a first host to access the first namespace and a second host to access the second namespace;
establishing a plurality of software-defined storage controllers including a first software-defined storage controller and a second software-defined storage controller, wherein each software-defined storage controller has access to the plurality of namespaces over a drive interface fabric and has access to the hosts assigned to the plurality of namespaces over a host interconnect fabric;
causing the first software-defined storage controller to handle input-output operations to and from the first namespace;
causing the second software-defined storage controller to handle input-output to and from the second namespace;
causing, in response to failure of the second software defined controller, the first software-defined storage controller to take over handling of the input-output operations to and from the second namespace; and
causing, in response to failure of the second software-defined storage controller, the second host to direct input-output operations destined for the second namespace to the first software-defined storage controller.