DIRECT-ATTACHED STORAGE DEVICE SOFTWARE RAID SYSTEM

A direct-attached storage device software RAID system includes a chassis housing a software RAID subsystem coupled to physical storage devices, controller devices, and a hypervisor subsystem housed in the chassis. The software RAID subsystem uses the physical storage devices to provide a logical storage device to the hypervisor subsystem. The software RAID subsystem also presents a first controller device to the hypervisor subsystem as a primary controller device that is connected to the logical storage device. When the software RAID subsystem receives a command from the hypervisor subsystem directed to the primary controller device and identifying a logical storage subsystem in the logical storage device, it transmits the command to each of a subset of the physical storage devices that provide the logical storage subsystem in the logical storage device via a respective one of the controller devices that couples the software RAID subsystem to that physical storage device.

BACKGROUND

The present disclosure relates generally to information handling systems, and more particularly to providing a software Redundant Array of Independent Disk (RAID) using direct-attached storage devices in an information handling system.

Information handling systems such as, for example, server devices and/or other computing devices known in the art, sometimes include hypervisors that utilize hardware resources in the server device to provide virtual machines. As will be appreciated by one of skill in the art in possession of the present disclosure, the virtual machines discussed above use connected storage devices to store their data, and the protection of such data in the event of the unavailability of any of those storage devices is desirable. An option for protecting data stored on storage devices like those described above includes the utilization of Redundant Array of Independent Disk (RAID) techniques, which one of skill in the art in possession of the present disclosure will recognize is a data storage virtualization technology that combines multiple physical storage devices into one or more logical storage devices for the purposes of data redundancy, performance improvements, and/or other RAID benefits that would be apparent to one of skill in the art in possession of the present disclosure. However, the utilization of RAID techniques on data stored by virtual machines in a server device can raise some issues.

For example, the VMWARE®n ESXi hypervisor available from VMWARE® Inc. of Palo Alto, California, United States, utilizes a software-defined virtual Storage Area Network (vSAN) data protection solution that protects data from storage device unavailability discussed above by aggregating storage devices connected to multiple server/host devices via the RAID techniques discussed above, and creating a shared datastore from pools of storage devices that may be accessed by each of the server devices/hosts that are part of a vSAN cluster. However, such vSAN data protection solutions require multiple server devices/hosts (e.g., a minimum of three server devices/hosts are required to provide level 1 RAID (RAID1) data protection, with one acting as a witness and the other two storing data), maintain multiple data backup copies, and are associated with relatively high licensing costs. As such, when the VMWARE®n ESXi hypervisor is utilized with a single server device/host to provide virtual machines that store their data in direct-attached storage devices included in the server device, the vSAN data protection solutions discussed above cannot be used to protect that data. One solution to such issues is the provisioning of a hardware-based RAID data protection solution in the server device that implements hardware-based RAID data protection techniques on data stored by the virtual machines in the storage devices in the server device, but such hardware-based RAID data protection solutions are relatively expensive.

Another solution to such issues is the use of a software RAID data protection solution in the server device like that provided in the Virtual RAID on Central Processing Unit (CPU) (VROC) data protection solution available in CPUs provided by INTEL® corporation of Santa Clara, California, United States. However, the VROC data protection solution discussed above is relatively limited in that it is only provided with INTEL® CPUs, may only be utilized with Non-Volatile Memory express (NVMe) storage devices, only provides RAID1 data protection, and requires Volume Management Device (VMD) hardware in the CPU. As such, the VROC data protection solutions discussed above do not operate with some types of storage devices (e.g., Serial Attached Small Computer System Interface (SCSI) (SAS) storage devices, Serial AT Attachment (SATA) storage devices, etc.) or some types of CPUs (e.g., CPUs available from Advance Micro Devices (AMD) of Santa Clara, California, United States). Furthermore, the VROC data protection solutions discussed above are also associated with relatively high licensing costs.

Accordingly, it would be desirable to provide a direct-attached storage device software RAID system that addresses the issues discussed above.

SUMMARY

According to one embodiment, an Information Handling System (IHS) includes a processing system; and a memory system that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a software Redundant Array of Independent Disk (RAID) engine that is configured to: provide, to a hypervisor subsystem that is coupled to the processing system using plurality of physical storage devices that are coupled to the processing system and included in a chassis with the processing system, a logical storage device; present, to the hypervisor subsystem, a first controller device that is included in a plurality of controller device coupled to the processing system as a primary controller device that is connected to the logical storage device; receive, from the hypervisor subsystem, a command that is directed to the primary controller device and that identifies a logical storage subsystem that is included in the logical storage device; and transmit, to each of a subset of the plurality of physical storage devices that provide the logical storage subsystem in the logical storage device, the command via a respective one of the plurality of controller devices that couples the processing system to that physical storage device.

DETAILED DESCRIPTION

Referring now toFIG.2, an embodiment of a computing device200is illustrated that may include the direct-attached storage device software RAID system of the present disclosure. In an embodiment, the computing device200may be provided by the IHS100discussed above with reference toFIG.1and/or may include some or all of the components of the IHS100, and in specific examples may be provided by a server device. However, while illustrated and discussed as being provided by a server device, one of skill in the art in possession of the present disclosure will recognize that the functionality of the computing device200discussed below may be provided by other devices that are configured to operate similarly as the computing device200discussed below. In the illustrated embodiment, the computing device200includes a chassis202that houses the components of the computing device200, only some of which are illustrated and described below.

For example, the chassis202may house a processing system (not illustrated, but which may include the processor102discussed above with reference toFIG.1such as a Central Processing Unit (CPU)) and a memory system (not illustrated, but which may include the memory114discussed above with reference toFIG.1such as Dynamic Random Access Memory (DRAM)) that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide an operating system engine204that is configured to provide an operating system and/or otherwise perform the functionality of the operating system engines, and/or computing devices discussed below. In the illustrated embodiment, the memory system may also include instructions that, when executed by the processing system, cause the processing system to provide a software RAID engine204athat is configured to perform the functionality of the software RAID engines, software RAID subsystems, and/or computing devices discussed below.

To provide a specific example, the software RAID engine204amay include a software RAID driver that is configured to utilize hardware resources in the computing device (e.g., the CPU, memory, etc.) in order to create and manage RAID infrastructure and/or perform any of a variety of RAID operations known in the art without the need for dedicated/specialized RAID hardware (e.g., a dedicated hardware RAID controller). However, while the software RAID engine204ais illustrated and described as being included in the operating system and/or otherwise being provided by the operating system engine204(i.e., being provided by the processing/memory system combination that also provides the operating system engine204), one of skill in the art in possession of the present disclosure will appreciate how the software RAID engine204amay be provided separately from the operating system/operating system engine204while remaining within the scope of the present disclosure as well.

In an embodiment, the software RAID driver in the software RAID engine204awill include a Small Computer System Interface (SCSI)-based driver, and one of skill in the art in possession of the present disclosure will appreciate how such a SCSI-compliant driver may be configured to be utilized with any PCIe devices/PCIe controller devices (e.g., Advanced Host Controller Interface (AHCI) controllers, SAS controllers, virtual PCIe controllers, NVMe controllers, etc.), thus allowing a computing device manufacturer to provide a single SCSI-based software RAID driver on a plurality of different computing device configurations of computing devices manufactured by the computing device manufacturer in order to enable the software RAID functionality described below in any of those computing devices using the PCIe devices/PCIe controller devices included in those computing devices. To provide a specific example, the software RAID driver in the software RAID engine204amay be implemented using the native model of the VMWARE®n ESXi hypervisor available from VMWARE® Inc. of Palo Alto, California, United States, although other software RAID driver configurations will fall within the scope of the present disclosure as well.

In the illustrated embodiment, the memory system may also include instructions that, when executed by the processing system, cause the processing system to provide a hypervisor engine204bthat is configured to create and provide the virtual machines described below using the hardware resources in the computing device200, and/or perform any of the other functionality of the hypervisor engines, hypervisor subsystems, and/or computing devices discussed below. For example, the hypervisor engine204bmay be configured to provide a VMWARE®n ESXi hypervisor available from VMWARE® Inc. of Palo Alto, California, United States, although other hypervisors are envisioned as falling within the scope of the present disclosure as well. As such, the hypervisor engine204bmay include a VMKernal that is available in the VMWARE®n ESXi hypervisor discussed above and that may provide any of the functionality of the hypervisor engine204bdescribed below. However, while the hypervisor engine204bis illustrated and described as being included in the operating system and/or otherwise being provided by the operating system engine204(i.e., being provided by the processing/memory system combination that also provides the operating system engine204), one of skill in the art in possession of the present disclosure will appreciate how the hypervisor engine204bmay be provided separately from the operating system/operating system engine204while remaining within the scope of the present disclosure as well.

In the illustrated embodiment, the chassis202also houses one or more controller devices206that are coupled to the software RAID engine204a(e.g., via a coupling between the controller device(s)206and the processing system that provides the software RAID engine204a). As discussed in the specific examples provided below, the controller device(s)206may be provided by Peripheral Component Interconnect express (PCIe) controller devices that may be included in and/or coupled to PCIe devices that are not provided by storage devices. For example, the PCIe controller device(s)206may be physical or virtual PCIe controller devices and may be included in Host Bus Adapter (HBA) devices, Advanced Host Controller Interface (AHCI) devices, and/or other PCIe devices that would be apparent to one of skill in the art in possession of the present disclosure. However, while illustrated and described as being provided by PCIe controller device(s), one of skill in the art in possession of the present disclosure will appreciate how the controller device(s)206may be provided by other types of controller devices while remaining within the scope of the present disclosure as well.

In the illustrated embodiment, the chassis202also houses one or more controller devices208athat are coupled to the software RAID engine204a(e.g., via a coupling between the controller device(s)208aand the processing system that provides the software RAID engine204a). As illustrated and discussed in the specific examples provided below, the controller device(s)208amay be provided by Peripheral Component Interconnect express (PCIe) storage controller devices that are coupled to one or more storage devices208bthat may be provided by any of Non-Volatile Memory express (NVMe) storage devices, Serial Attached Small Computer System Interface (SCSI) (SAS) storage device, Serial AT Attachment (SATA) storage devices, and/or other storage devices that would be apparent to one of skill in the art in possession of the present disclosure. For example, the PCIe storage controller device(s)208amay be provided by physical or virtual PCIe storage controller devices and may include PCIe storage controller devices configured as NVMe storage controllers, SAS storage controllers, SATA storage controllers, and/or other PCIe storage controller devices that would be apparent to one of skill in the art in possession of the present disclosure. However, while illustrated and described as being provided by PCIe controller device(s), one of skill in the art in possession of the present disclosure will appreciate how the controller device(s)208amay be provided by other types of controller devices while remaining within the scope of the present disclosure as well.

In the illustrated embodiment, the chassis202also houses one or more controller devices210athat are coupled to the software RAID engine204a(e.g., via a coupling between the controller device(s)208aand the processing system that provides the software RAID engine204a). As illustrated and discussed in the specific examples provided below, the controller device(s)210amay be provided by Peripheral Component Interconnect express (PCIe) controller devices that are included in one or more storage devices210that may be provided by any of Non-Volatile Memory express (NVMe) storage devices, Serial Attached Small Computer System Interface (SCSI) (SAS) storage device, Serial AT Attachment (SATA) storage devices, and/or other storage devices that would be apparent to one of skill in the art in possession of the present disclosure. For example, the PCIe storage controller device(s)210amay be provided by physical or virtual PCIe storage controller devices and may include PCIe storage controller devices configured as NVMe storage controllers. However, while illustrated and described as being provided by PCIe controller device(s), one of skill in the art in possession of the present disclosure will appreciate how the controller device(s)210amay be provided by other types of controller devices while remaining within the scope of the present disclosure as well.

However, while three different embodiments of controller devices206,208a, and210aare illustrated and described as being included in the computing device200(e.g., stand-alone controller device(s), storage-device-connected controller device(s), and storage-device-integrated controller device(s)), one of skill in the art in possession of the present disclosure will appreciate how one or more of the controller devices206,208a, and/or210amay be omitted from the computing device200while remaining within the scope of the present disclosure as well. Furthermore, while not explicitly illustrated, one of skill in the art in possession of the present disclosure will appreciate how any of the controller devices208aand/or210amay be coupled to and/or may control multiple storage devices208band/or210, respectively, while remaining within the scope of the present disclosure as well.

Further still, one of skill in the art in possession of the present disclosure will appreciate how storage devices may be coupled to the software RAID engine204avia multiple controller devices (e.g., when an NVMe storage device with an integrated controller device is connected via an external controller device to the software RAID engine204a). As such, while a specific computing device200has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that computing devices (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the computing device200) may include a variety of components and/or component configurations for providing conventional computing device functionality, as well as the direct-attached storage device software RAID functionality discussed below, while remaining within the scope of the present disclosure as well.

For example, one of skill in the art in possession of the present disclosure will appreciate how the present disclosure describes the direct-attached storage device software RAID system of the present disclosure implemented to operate with hypervisor subsystem such as the VMWARE® ESXi hypervisor subsystem described above. However, the inventors of the present disclosure have also developed a direct-attached storage device software RAID system may be implemented with an operating system (i.e., rather than a hypervisor subsystem) in order to allow software RAIDs to be provided using any types of direct-attached storage devices and any types of CPUs in a computing device similarly as described below, and that direct-attached storage device software RAID system is described in U.S. patent application Ser. No. ______, attorney docket no. 133527.01, filed ______, the disclosure of which is incorporated herein by reference in its entirety.

Referring now toFIG.3, an embodiment of a method300for providing a software Redundant Array of Independent Disk (RAID) using direct-attached storage devices in a computing device is illustrated. As discussed below, the systems and methods of the present disclosure provide for the presentation by a software RAID subsystem to a hypervisor subsystem of a single, primary controller device as being connected to a logical storage device provided by a plurality of physical storage devices, with the software RAID subsystem receiving commands from the hypervisor subsystem that are directed to the primary controller device and that identify a logical storage subsystem that is included in the logical storage device, and transmitting those commands to a subset of the physical storage devices that provide that logical storage subsystem via respective controller device(s) that couple the software RAID subsystem to that subset of physical storage devices.

For example, the direct-attached storage device software RAID system of the present disclosure may include a chassis housing a software RAID subsystem coupled to physical storage devices, controller devices, and a hypervisor subsystem housed in the chassis. The software RAID subsystem uses the physical storage devices to provide a logical storage device to the hypervisor subsystem. The software RAID subsystem also presents a first controller device to the hypervisor subsystem as a primary controller device that is connected to the logical storage device. When the software RAID subsystem receives a command from the hypervisor subsystem directed to the primary controller device and identifying a logical storage subsystem in the logical storage device, it transmits the command to each of a subset of the physical storage devices that provide the logical storage subsystem in the logical storage device via a respective one of the controller devices that couples the software RAID subsystem to that physical storage device. As such, software RAIDs may be provided using any types of direct-attached storage devices and any types of CPUs in a computing device, as well as provide a variety of other benefits that would be apparent to one of skill in the art in possession of the present disclosure.

The method300begins at block302where a software RAID subsystem configures a logical storage device using physical storage devices. With reference toFIG.4, in an embodiment of block302, the software RAID engine204ain the computing device200may perform logical storage device configuration operations400that may include discovering each of the controller devices206,208a, and210aand, in response, discovering each of the storage devices208band/or210coupled thereto, and then configuring a logical storage device using those storage devices208band/or210. In a specific example, each of the storage device(s)208amay be coupled to a PCIe controller device that is provided by one of the controller device(s)208adiscovered at block302, and each of the storage device(s)210may include a PCIe controller device that is provided by one of the controller device(s)210adiscovered at block302, while PCIe controller device(s) that are provided by the controller device(s)206and that are not coupled to storage devices may be discovered at block302as well.

For example, in response to the powering on, reset, reboot, and/or other initialization of the computing device200, the computing device200may enter a pre-boot mode in which the software RAID engine204aperforms any of a variety of software RAID operations and/or other techniques that would be apparent to one of skill in the art in possession of the present disclosure in order to configure a RAID using the storage devices208aand210that allows the software RAID engine204ato present those storage devices208aand210as one or more logical storage devices. As will be appreciated by one of skill in the art in possession of the present disclosure, the RAID maybe configured using the storage devices208aand210with a variety of standard RAID levels such as a RAID0, RAID1, RAID2, RAID3, RAID4, RAID5, or RAID 6, as well as combinations of standard RAID levels (e.g., RAID 1+0, also known as RAID10), non-standard RAID levels, and/or any other RAID levels that would be apparent to one of skill in the art in possession of the present disclosure.

The method300then proceeds to block304where the software RAID subsystem allocates memory space for a direct-attached storage device software RAID system. In an embodiment, at block304, the software RAID engine204ain the computing device200may perform memory space allocation operations that may include allocating memory space for use by the direct-attached storage device software RAID system of the present disclosure. For example, the memory space allocation operations performed by the software RAID engine204amay include allocating a memory space or other portion of the memory system that is used to provide the operating system engine204(e.g., operating system kernel memory) for use by the software RAID engine204ato perform any of the direct-attached storage device software RAID operations or other functionality discussed below. As will be appreciated by one of skill in the art in possession of the present disclosure, the memory space or other portion of the memory system allocated for use by the direct-attached storage device software RAID system may be referred to a “heap memory” that may be dynamically allocated to the software RAID driver provided by the software RAID engine204a(e.g., unlike memory space allocated to stacks), and one of skill in the art in possession of the present disclosure will recognize how the heap memory may be utilized to perform any of the functionality described below.

In a specific example, the allocation of the heap memory to the software RAID engine204amay be performed during module initialization operations that are performed when an operating system provided by the operating system engine204is loaded and calls those module initialization operations, and the software RAID engine204amay allocate the heap memory based on a number of storage devices (e.g., a maximum number of storage devices) that the software RAID engine204ais configured to support. However, while a specific example of the allocation of memory space for use by the direct-attached storage device software RAID system of the present disclosure has been described, one of skill in the art in possession of the present disclosure will appreciate how memory space may be allocated for use by the direct-attached storage device software RAID system using a variety of techniques that will fall within the scope of the present disclosure as well.

The method300then proceeds to block306where the software RAID subsystem and the hypervisor subsystem register a controller device supported by the software RAID subsystem. With reference toFIG.5, in an embodiment of block306, the controller device registration operations may include the software RAID engine204ain the computing device200performing supported controller device identification operations500that may include identifying controller devices that are supported by the software RAID engine204ato the hypervisor engine204bin the computing device200. For example, any of the controller devices206,208a, and/or210adiscovered at block302as discussed above may be identified to the hypervisor engine204bas supported controller devices at block306. In a specific example, at block306, the software RAID engine204amay generate a Peripheral Component Interconnect (PCI) IDentification (PCIID) file that identifies the PCIe controller devices that are supported by the software RAID engine204a, and may load or otherwise transmit that PCIID file to the hypervisor engine204b. However, while a specific example of the identification of controller devices to the hypervisor engine204bthat are supported by the software RAID engine204ahas been described, one of skill in the art in possession of the present disclosure will appreciate how the software RAID engine204amay identify supported controller devices to the hypervisor engine204busing other techniques that will fall within the scope of the present disclosure as well.

With reference toFIG.6A, in an embodiment of block306, the controller device registration operations may also include the hypervisor engine204bin the computing device200performing controller device attachment request operations600that may include the hypervisor engine204bgenerating and transmitting a controller device attachment request for one of the controller devices that was identified as being supported by the software RAID engine204a. For example, a VMkernal in the VMWARE®n ESXi hypervisor described above that provides the hypervisor engine204bmay generate and transmit an “AttachDevice” ESXi call that provides the controller device attachment request and that one of skill in the art in possession of the present disclosure will recognize provides an instruction to the software RAID engine to initialize and discover one of the controller devices that was identified as being supported via a SCSI transport layer. However, while a specific example of a controller device attachment request has been described, one of skill in the art in possession of the present disclosure will appreciate how the hypervisor engine204bmay request the initialization and discovery of controller devices using other techniques that will fall within the scope of the present disclosure as well.

With reference toFIG.6B, in an embodiment of block306and in response to receiving the controller device attachment request from the hypervisor engine204b, the controller device registration operations may also include the software RAID engine204ain the computing device200performing initialization and discovery operations602that may include the software RAID engine204ainitializing and discovering, in the specific example provided inFIG.6B, the one of the controller device(s)206identified by the hypervisor engine204bin the controller device attachment request. As will be appreciated by one of skill in the art in possession of the present disclosure, the initialization and discovery operations602performed by the software RAID engine204amay include any of a variety of initialization operations and discovery operations that would be apparent to one of skill in the art in possession of the present disclosure, and may depend on the protocol supported by that controller device (e.g., a SAS protocol, a SATA protocol, an NVMe protocol, etc.).

In some embodiments, following the initialization and discovery of the first controller device during the first iteration of block306, the software RAID engine204ain the computing device200may perform timer registration operations that may include registering a timer with the hypervisor engine204b. As discussed below, some embodiments of the present disclosure may include the utilization of a timer to determine when the last controller device has been registered as part of the controller device registration operations performed across one or more iterations of block306of the method300, and thus that timer may be registered by the software RAID engine204awith the hypervisor engine204bat block306using any of a variety of timer registration techniques that would be apparent to one of skill in the art in possession of the present disclosure. However, the registration of the timer is described as occurring at a particular point in method300(e.g., following initialization and discovery of the first controller device during the first iteration of block306), one of skill in the art in possession of the present disclosure will appreciate how the timer may be registered at other points in the method300while remaining within the scope of the present disclosure as well. Furthermore, other embodiments of the method300may utilize other techniques to determine when the last controller device has been registered as part of the controller device registration operations across one or more iterations of block306of the method300, and thus the timer registration operations may be skipped in those embodiments.

With reference toFIG.6C, in an embodiment of block306and in response to initializing and discovering the one of the controller device(s)206in the specific example provided inFIG.6B, the controller device registration operations may also include the software RAID engine204ain the computing device200performing controller device attachment confirmation operations604that may include the software RAID engine204aconfirming the completion of the controller device attachment request that was received from the hypervisor engine204bfor the one of the controller device(s)206in the specific example provided inFIG.6B. For example, in response to the successful initialization and discovery of a connected controller device and its corresponding storage device(s), the software RAID engine204amay confirm the attachment request to the hypervisor engine204b. While not illustrated or discussed in detail, one of skill in the art in possession of the present disclosure will appreciate how the software RAID engine204amay identify to the hypervisor engine204bany failures of the initialization and discovery of any connected controller devices and its corresponding storage device(s) as well.

With reference toFIG.6D, in an embodiment of block306, the controller device registration operations may also include the hypervisor engine204bin the computing device200performing hypervisor registration request operations606that may include the hypervisor engine204bgenerating and transmitting a hypervisor registration request to register the one of the controller devices in the specific example provided inFIG.6Bwith the hypervisor engine204b. For example, a VMkernal in the VMWARE®n ESXi hypervisor described above that provides the hypervisor engine204bmay generate and transmit an “ScanDevice” ESXi call that provides the hypervisor registration request and that one of skill in the art in possession of the present disclosure will recognize provides an instruction to the software RAID engine to register the one of the controller devices in the specific example provided inFIG.6Bin the hypervisor engine204b. However, while a specific example of a hypervisor registration request has been described, one of skill in the art in possession of the present disclosure will appreciate how the hypervisor engine204bmay request the registration of controller devices in the hypervisor engine204busing other techniques that will fall within the scope of the present disclosure as well.

With reference toFIG.6E, in some embodiments of block306and in response to receiving the hypervisor registration request (e.g., the “ScanDevice” ESXi call), the controller device registration operations may also include the software RAID engine204ain the computing device200performing hypervisor registration operations608that may include the software RAID engine204aregistering the one of the controller device(s)206in the specific example provided inFIG.6Bin the hypervisor engine204busing any of a variety of hypervisor/controller device registration techniques that would be apparent to one of skill in the art in possession of the present disclosure. For example, in response to a “ScanDevice” ESXi call, the software RAID engine204amay register the controller device with the hypervisor engine204band retrieve a “handle” for use in performing subsequent communications with that controller device, and then enable Input/Output (I/O) commands for the controller device from the hypervisor engine204bonce that registration is completed. However, in other embodiments of block306and in response to receiving the hypervisor registration request (e.g., the “ScanDevice” ESXi call), the hypervisor registration operations may instead include the software RAID engine204ain the computing device200“holding”, delaying, and/or otherwise waiting to perform the hypervisor registration operations608that register the one of the controller device(s)206in the specific example provided inFIG.6Bin the hypervisor engine204b.

The method300then proceeds to decision block308where it is determined whether there is an additional controller device supported by the software RAID subsystem to register. In some embodiments of decision block308, following the registration of the one of the controller device(s)206in the specific example provided inFIG.6Bin the hypervisor engine204bat block306, the software RAID engine204ain the computing device200may perform timer activation operations in order to activate the timer discussed above that may have been registered with the hypervisor engine204bin some embodiments of the present disclosure. The software RAID engine204amay then monitor that timer at decision block308to determine whether another controller device attachment request (e.g., the “AttachDevice” ESXi call in the specific example provided above) for another of the controller devices206,208b, and/or210ais received from the hypervisor engine204bwithin a threshold time period. As will be appreciated by one of skill in the art in possession of the present disclosure, the software RAID engine204amay utilize any of a variety of threshold time periods that, after which, the software RAID engine204amay assume that no further controller device attachment requests will be received (i.e., that there are no further controller devices to be registered with the hypervisor engine204b).

However, while the use of a timer and threshold time period following registration of any particular controller device in order to determine whether there are any other controller devices to register at decision block308has been described, as discussed above other techniques for determining whether there are any other controller devices to register at decision block308will fall within the scope of the present disclosure as well. For example, other embodiments of the present disclosure may provide a software driver in the computing device200that is configured to identify a number of available controller devices in the computing device200, and then transmit that number of available controller devices to the software RAID engine204afor use in determining at decision block308whether the number of controller devices registered with the hypervisor engine204ahas reached that number of available controller devices. As such, the determination of whether there are any other controller devices to register in the hypervisor engine204bduring decision block308of the method300may be performed in a variety of manners while remaining within the scope of the present disclosure.

If, at decision block308, it is determined that there is an additional controller device supported by the software RAID subsystem to register, the method300returns to block306. As such, the method300may loop such that the software RAID engine204aand the hypervisor engine204bin the computing device200operate to register any additional controller device with the hypervisor engine204b. Thus, different iterations of block306and decision block308may cause the software RAID engine204aand the hypervisor engine204bto register each of the controller devices in the computing device200in the hypervisor engine204b. For example, for any remaining controller devices206,208a, and210a, the controller device attachment request operations600, initialization and discovery operations602, controller device attachment confirmation operations604, hypervisor registration request operations606, and hypervisor registration operations608described above for block306may be performed for that controller device, and block306may repeat until it is determined that there are no additional controller devices to register with the hypervisor engine204b.

If, at decision block308, it is determined that there are no additional controller devices supported by the software RAID subsystem to register, the method300proceeds to block310where the software RAID subsystem creates one or more logical storage subsystems in the logical storage device. In an embodiment, at block310and in response to determining that there are no additional controller devices to register with the hypervisor engine204b, the software RAID engine204ain the computing device200may perform logical storage subsystem creation operations that may include creating one or more logical storage subsystems in the logical storage device provided by the storage devices208band210. For example, with reference toFIG.7, in some embodiments the logical storage subsystem creation operations may include the software RAID engine204aperforming metadata retrieval operations700that may include retrieving metadata from the controller devices208aand210acoupled to each of the storage devices208band210that are being used to provide the logical storage device.

As will be appreciated by one of skill in the art in possession of the present disclosure, the metadata retrieved from the controller devices208aand210acoupled to each of the storage devices208band210may identify one or more logical storage subsystems (e.g., virtual disks, RAID volumes, RAID Logical Unit Numbers (LUNs), and/or logical storage subsystems known in the art) that will be provided by each of the storage devices208band210, as well as any other information that one of skill in the art in possession of the present disclosure would recognize as providing for the creation of the logical storage subsystems in the logical storage device. As such, at block310, the logical storage subsystem creation operations performed by the software RAID engine204amay include using the metadata retrieved from the controller devices208aand210acoupled to each of the storage devices208band210to “build”, generate, and/or otherwise create one or more logical storage subsystems (e.g., virtual disks, RAID volumes, RAID LUNs, and/or logical storage subsystems known in the art) in the logical storage device that is provided by the storage devices208band210. However, while a specific example of the creation of logical storage subsystem(s) in a logical storage device has been described, one of skill in the art in possession of the present disclosure will appreciate how the logical storage subsystems may be created in the logical storage device using a variety of techniques that will fall within the scope of the present disclosure as well.

The method300then proceeds to block312where the software RAID subsystem configures command communications with the hypervisor subsystem. With reference toFIG.8, in an embodiment of block312, the software RAID engine204ain the computing device200may perform command communication configuration operations800that may include identifying a primary controller device from the plurality of controller devices206,208a, and210a. For example, the controller device206,208a, or210aidentified as the primary controller device at block312may be a PCIe controller device that may have been designated by a computing device manufacturer to operate as the primary controller device based on that PCIe controller device being common to a variety of different configurations of computing devices provided by the computing device manufacturer (and thus being present in each of those computing devices/computing device configurations if needed to implement the direct-attached storage device software RAID system of the present disclosure). In another example, the controller device206,208a, or210aidentified as the primary controller device at block312may be a PCIe controller device that is not configured to be “hot removed” from the computing device200. However, while a few specific examples of controller devices that may be identified as primary controller devices have been described, one of skill in the art in possession of the present disclosure will appreciate how any of a variety of criteria may be used to designate the controller device that may be identified as the primary controller device at block312while remaining within the scope of the present disclosure as well.

In a specific example, at block312, the software RAID engine204ain the computing device200may perform command communication configuration operations that may also include identifying a number of SCSI queues in a SCSI layer of the hypervisor engine204bthat are used by the hypervisor engine204bto communicate with the software RAID engine204a, and one of skill in the art in possession of the present disclosure will appreciate how any Input/Output (I/O) commands generated by the hypervisor engine204b(e.g., the VMKernal discussed above) will be mapped to one of those SCSI queues. Furthermore, the SCSI queues may be mapped to SAS, SATA, and/or NVMe protocol queues in the software RAID engine204aso that I/O commands generated by the hypervisor engine204bmay be transmitted to the storage devices208band210. As will be appreciated by one of skill in the art in possession of the present disclosure, the allocation of SCSI queues is typically dependent on the number of processing cores available in the processing system that provides the hypervisor engine204b, and thus the software RAID engine204amay request the SCSI queues from the hypervisor engine204b(e.g., the VMKernal described herein) based on the SCSI queue requirements and the number of processor cores that are available. However, while a few examples of command communication configuration operations have been described, one of skill in the art in possession of the present disclosure will appreciate how a variety of configuration operations may be performed in order to enable the communication functionality described below while remaining within the scope of the present disclosure.

In embodiments in which the software RAID engine204ain the computing device200“holds”, delays, and/or otherwise waits to perform the hypervisor registration operations608that register the controller device in the hypervisor engine204bwhen receiving the hypervisor registration requests (e.g., “ScanDevice” ESXi calls) discussed above, following the command communication configuration operations at block312the software RAID engine204amay perform the hypervisor registration operations608in response to each of those hypervisor registration requests (e.g., the software RAID engine204amay enable I/O commands for each storage device corresponding to a respective “ScanDevice” ESXi call provided by the hypervisor engine204bfor that storage device). Following those hypervisor registration operations, or following the command configuration operations at block312in embodiments in which those hypervisor registration operations are performed upon receiving the hypervisor registration requests during block306, the direct-attached storage device software RAID system completes initialization such that the RAID volume provided by the logical storage device is configured for use, and one of skill in the art in possession of the present disclosure will appreciate how a full RAID volume or partial RAID volume may be configured via the method300as described above, and may be used for runtime data, during boot/initialization, and/or for other RAID volume uses that would be apparent to one of skill in the art in possession of the present disclosure.

The method300then proceeds to block314where the software RAID subsystem presents one of the controller devices to the hypervisor subsystem as a primary controller device that is connected to the logical storage device. With reference toFIG.9, in an embodiment of block314and following the completion of the initialization of the direct-attached storage device software RAID system, the software RAID engine204amay present, to a plurality of virtual machines900a,900b, and up to900cthat are provided by the hypervisor engine204bin the computing device200, a primary controller device902(which as discussed above is provided by one of the controller devices206,208a, or210a) as being connected to a RAID logical storage device904that includes a RAID datastore904a(e.g., which may be provided “on top” of RAID LUN(s)) and that is provided using a plurality of physical storage devices906a,906b, and up to906c(which may be any of the storage devices208aand210registered with the hypervisor engine204bas discussed above). As will be appreciated by one of skill in the art in possession of the present disclosure, the RAID datastore904amay be provided in the RAID logical storage device904when the hypervisor engine204bis provided by the VMWARE® ESXi hypervisor discussed above, and refers to a partition that has a Virtual Machine File System (VMFS) file system type and that is created using VMWARE® tools (or the VMWARE® ESXi hypervisor itself) on top of RAID volumes/LUNs that are exposed to the VMWARE® ESXi hypervisor.

To provide a specific example, one of the controller device(s)206that is not connected to a storage device may be presented to the hypervisor engine204bas being connected to the RAID logical storage device904, although one of skill in the art in possession of the present disclosure will appreciate how any one of the controller devices208aor210amay be presented to the hypervisor engine204bas being connected to the RAID logical storage device904while remaining within the scope of the present disclosure as well. As will be appreciated by one of skill in the art in possession of the present disclosure, any of the controller devices206,208a, and210athat are not presented to the hypervisor engine204bas being connected to the RAID logical storage device904may instead be presented to the hypervisor engine204bas secondary controller devices that are not connected to the RAID logical storage device904or any of the storage devices906a-906c(i.e., despite at least some of those controller devices being physically connected to those storage devices906a-906c).

As such, each of the logical storage subsystems (e.g., virtual disks, RAID volumes, RAID LUNs, and/or logical storage subsystems known in the art) provided by the RAID logical storage device904are exposed to the virtual machines900a-900cprovided by the hypervisor engine204b(e.g., the VMKernal discussed above) via the primary controller device902. Thus, using some of the specific examples discussed above, each of the logical storage subsystems (e.g., virtual disks, RAID volumes, RAID LUNs, and/or logical storage subsystems known in the art) provided by storage devices906a-906bmay be presented to a user of the operating system provided by the operating system engine204as SCSI storage devices or otherwise being provided by SCSI storage devices.

The method300then proceeds to block316where the software RAID subsystem receives a command from the hypervisor subsystem that is directed to a primary controller device and that identifies a logical storage subsystem. With reference toFIG.10, in an embodiment of block316, the virtual machine900aprovided by the hypervisor engine204bin the computing device200may perform command provisioning operations1000that include generating a command that identifies a logical storage subsystem provided by the RAID logical storage device904(e.g., via the RAID datastore904aas illustrated inFIG.10), and transmitting that command to the primary controller device902that is presented as being connected to the RAID logical storage device904, which one of skill in the art in possession of the present disclosure will appreciate will result that in that command being received by the software RAID engine204ain the computing device200.

In an embodiment, the command transmitted by the virtual machine900aprovided by the hypervisor engine204bto the software RAID engine204amay include I/O commands such as a read command, a write command, and/or any other RAID commands that would be apparent to one of skill in the art in possession of the present disclosure. Furthermore, while the virtual machine900ais illustrated and described as providing the command received by the software RAID engine204aat block316, one of skill in the art in possession of the present disclosure will appreciate how any of the virtual machines900b-900cmay provide commands in a similar manner while remaining within the scope of the present disclosure as well.

Using the specific example provided above in which the software RAID engine204ais provided by a SCSI-based driver, any commands received at block316by the software RAID engine204afrom the virtual machines900a-900cprovided by the hypervisor engine204bmay be SCSI commands. Furthermore, as discussed in some of the specific examples above, the any commands received at block316by the software RAID engine204afrom the virtual machines900a-900cmay be mapped to SCSI queues in the hypervisor engine204bthat are used to communicate with the software RAID engine204aprovided by the SCSI-based driver, and thus the software RAID engine206amay receive those commands via the accessing of those SCSI queues.

The method300then proceeds to block318where the software RAID subsystem transmits the command to a subset of physical storage devices that provide the logical storage subsystem via respective controller device(s) that couple the software RAID subsystem to that subset of physical storage devices. With continued reference toFIG.10, in an embodiment of block318, the software RAID engine204amay perform command transmission operations1000aand100bthat, in the specific example illustrated inFIG.10, includes transmitting the command received at block316to the storage device906aand the storage device906cvia their respective controller device(s) (e.g., any of the controller device(s)208aand210a) based on those storage devices906aand906cproviding the logical storage subsystem identified in the command received by the software RAID engine204afrom the virtual machine900a. As will be appreciated by one of skill in the art in possession of the present disclosure, the commands1000aand1000btransmitted to the storage devices906aand906cmay be provided by modified versions of the command1000received from the virtual machine900a(e.g., SCSI commands received from the virtual machine900amay be translated to a protocol supported by the controller device/storage device to which it is transmitted.

For example, in response to receiving the command from the virtual machine900aprovided by the hypervisor engine204bin the computing device200, the software RAID engine204ain the computing device200may determine which of the storage devices906a-90bcprovide the logical storage subsystem identified in that command (e.g., the storage devices906aand906cin this specific example). As discussed above, in some specific examples, SCSI queues in hypervisor engine204bmay be mapped to SAS, SATA, and/or NVMe protocol queues in the software RAID engine204a, and thus the software RAID engine204amay provide any commands received from the virtual machines900a-900cin the protocol queues associated with the protocol utilized by the storage devices that provide the logical storage subsystem to which those commands are directed. As such, the command received by the software RAID engine204afrom the virtual machine900amay be placed in a protocol queue associated with the protocol used by the storage device906a, as well as in a protocol queue associated with the protocol used by the storage device906c.

In embodiments in which the software RAID engine204ais provided by a SCSI-based driver and the commands received from the virtual machine900aare SCSI commands, in the event the storage devices906aand/or906care SAS storage devices or otherwise use the SAS protocol, SCSI commands may be placed in a SAS protocol queue in the software RAID engine204aand then transmitted to the storage devices906aand/or906cvia their respective controller device(s) (e.g., any of the controller device(s)208aand210a). However, in the event the storage devices906aand/or906care SATA storage devices or otherwise use the SATA protocol, SCSI commands may be placed in a SATA protocol queue in the software RAID engine204a, translated using a SCSI translation layer in the software RAID engine204a(e.g., a SCSI-to-Frame Information Structure (FIS) translation), and then transmitted to the storage devices906aand/or906cvia their respective controller device(s) (e.g., any of the controller device(s)208aand210a). Similarly, in the event the storage devices906aand/or906care NVMe storage devices or otherwise use the NVMe protocol, SCSI commands may be placed in an NVMe protocol queue in the software RAID engine204a, translated using a SCSI translation layer in the software RAID engine204a(e.g., a SCSI-to-NVMe translation), and then transmitted to the storage devices906aand/or906cvia their respective controller device(s) (e.g., any of the controller device(s)208aand210a).

However, while a few specific examples of the translation of commands received from the virtual machines900a-900cprovided by the hypervisor engine204bbefore providing them to the storage devices906a-906cvia their respective controller devices have been described, one of skill in the art in possession of the present disclosure will appreciate that other command translations may be performed while remaining within the scope of the present disclosure as well. For example, one of skill in the art in possession of the present disclosure will appreciate how a PCIe controller device connected to a SAS controller device will operate as a SAS controller that utilizes the SAS protocol, and thus no command translations may be needed in such situations. Similarly, a PCIe controller device connected to a SATA controller device will operate as a SATA controller that utilizes the SATA protocol, and thus SCSI-to-FIS translations may be needed in such situations.

The method300then returns to block316. As such, the method300may loop such that the software RAID engine204ain the computing device200receives commands from the virtual machines900a-900cprovided by the hypervisor engine204bin the computing device200transmits those commands to the storage devices906a-906cvia their respective controllers as long as the storage devices906a-906care being used to provide the RAID logical storage device904/RAID datastore904ato the virtual machines900a-900c. While not described in detail herein, in the event the storage devices906a-906cwill no longer be used to provide the RAID logical storage device904/RAID datastore904ato the virtual machines900a-900c, the software RAID engine204amay disconnect the controller device(s)206,208a, and210afrom the hypervisor engine204b(e.g., via DetachDriver ESXi calls), as well as perform any other operations that would be apparent to one of skill in the art in possession of the present disclosure.

Thus, systems and methods have been described that provide for the presentation by a SCSI-based software RAID driver to a hypervisor of a single, primary PCIe controller device as being connected to a RAID logical storage device provided by a plurality of SAS, SATA, and/or NVMe physical storage devices, with the SCSI-based software RAID driver receiving I/O commands from the hypervisor that are directed to the primary PCIe controller device and that identify a RAID logical storage subsystem that is included in the RAID logical storage device, and transmitting those commands to a subset of the SAS, SATA, and/or NVMe physical storage devices that provide that RAID logical storage subsystem via respective PCIe controller device(s) that couple the SCSI-based software RAID driver to that subset of SAS, SATA, and/or NVMe physical storage devices. As such, software RAID support in hypervisor subsystem like the VMWARE® ESXi hypervisor discussed above is enabled in direct-attached storage device configurations for any types of storage devices and any types of CPUs, thus allowing the creation of a RAID using any available storage devices in a variety of computing devices. As such, RAID systems may be configured from a larger variety of storage devices and using spanned PCIe controllers, addressing several issues with the conventional RAID systems discussed above.