This disclosure relates generally to redundant array of independent disks (RAID) drives, and more particularly to using a RAID device driver as a backup for a RAID adapter.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
To provide the data storage demanded by many modern organizations, information technology managers and network administrators often turn to one or more forms of RAID (redundant arrays of inexpensive/independent disks), which may provide enhanced data reliability by distributing data across a logical grouping of disk drives rather than storing the data on a single disk drive. Distributing the data across multiple drives helps ensure that the failure of a single disk drive does not result in irretrievable data loss, since data on a failed drive can be reconstructed from data on the remaining drives.
A RAID engine, e.g. the portion of the RAID system that distributes data among the different disk drives, may be implemented either in software or hardware. Software implementations of RAID engines are sometimes referred to as “host-based,” and include RAID engines implemented by the operating system (OS-based) or by a disk-controller specific software driver (driver-based). RAID engines implemented in firmware or hardware (hardware-based) are generally implemented using storage adapters with a dedicated input/ouput processor (IOP-based) with or without a disk controller (IOC—IO Controller).
Some information handling systems use multiple RAID adapters to provide redundancy for the RAID engine. Two types of redundancy commonly used include active/active and active/passive. An active/active system uses multiple RAID adapters, with each adapter sharing part of the load during normal operations. In an active/passive system some adapters are designated as standby and remain idle. When an adapter fails a adapter designated as standby takes over this function. However, solutions that use multiple adapters introduce additional hardware to provide the protection, hence additional cost and complexity.
In accordance with teachings of the present disclosure, a system, method, and software are described for using a driver-based RAID (redundant array of independent disks) engine as a backup for a hardware-based RAID engine.
At least one embodiment provides a method that includes receiving an indication that a hardware-based RAID engine has malfunctioned, and implementing a driver-based RAID engine in response to receiving an indication of the malfunction. The hardware-based RAID engine may be implemented in a suitable RAID adapter, for example a RAID adapter implementing an input/output processor (IOP), while the driver-based RAID engine may be implemented using a software driver compatible with any of various operating systems.
Another embodiment provides an information handling system that includes a processor, memory, and an operating system (OS) that may be stored in the memory and executed by said processor. The information handling system also includes a storage adapter used to implement a hardware-based RAID engine, and a device driver, associated with said storage adapter. The device driver includes a program of executable instructions including at least one instruction to interface between said OS and said storage adapter, and at least one instruction to implement a driver-based RAID engine if the hardware-based RAID engine fails.
Yet another embodiment provides a computer readable medium tangibly embodying a program of executable instructions. The program of instructions includes at least one instruction to receive an indication that a malfunction is preventing a storage adapter from implementing a hardware-based RAID engine and at least one instruction to implement a driver-based RAID engine in response to receiving the indication of the malfunction.
A more complete understanding of the present embodiments and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein:
Preferred embodiments and their advantages are best understood by reference to
For purposes of this disclosure, an information handling system may include any instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, or other purposes. For example, an information handling system may be a personal computer, a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include random access memory (RAM), one or more processing resources such as a central processing unit (CPU) or hardware or software control logic, ROM, and/or other types of nonvolatile memory. Additional components of the information handling system may include one or more disk drives, one or more network ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The information handling system may also include one or more buses operable to transmit communications between the various hardware components.
An information handling system according to an embodiment of the present disclosure may employ any of various suitable types of redundant array of independent disks (RAID) drive configurations. Some commonly used prior art RAID configurations are illustrated in
The prior art system 100 illustrated in
Alternatively, a system 200, as illustrated in
Referring briefly to
Referring next to
A RAID controller 600, suitable for use in system 500 is illustrated in
In some implementations the IOP and IOC may not be separate components, but may be integrated into a single part. Note that the firmware 610 may be referred to as software used to control the operation of RAID controller 600. As used herein, however, since the firmware 610 is implemented in a RAID controller, firmware 610 is considered part of the hardware. Consequently, a RAID engine implemented in a controller's firmware is included in the meaning of the term “hardware-based RAID engine” and similar terms.
Referring now to
According to at least one embodiment, RAID engine 750 is the primary RAID engine used by system 700 to implement RAID functionality. So, for example, when data or instructions in the OS storage stack 710 is to be written to HDDs 760, RAID adapter driver 720 provides the data or instructions to RAID controller 740, which implements the RAID functionality using hardware RAID engine 750. As noted earlier, hardware RAID engine may include firmware to implement or assist in implementing the desired RAID functionality.
As used herein, the term “RAID functionality” and similar terms may include, but is not limited to, calculating parity data and checksums as required to implement various RAID levels, determining on which disk various portions of information should be stored, and similar functions and managing cache, if present.
If hardware-based RAID engine 750 encounters an error that prevents it from properly implementing the desired RAID functionality, or if for some other reason it is desirable to stop using hardware-based RAID engine 750, a driver-based RAID engine such as recovery RAID engine 730 may be used to implement the desired RAID functionality. In this way, recovery RAID engine 730 can be used to provide backup RAID functionality for hardware RAID engine 750.
In some embodiments, the backup functionality provided by driver-based RAID engine 730 may not include the full set of functionality provided by hardware-based RAID engine 750. In other embodiments, however, driver-based RAID engine 730 provides the same or comparable RAID functionality as that provided by the hardware-based RAID engine. Note that while various embodiments designating a hardware based RAID engine as primary and a driver-based RAID engine as secondary are primarily discussed, herein, in other embodiments the roles may be reversed. That is to say, the driver-based RAID engine may be designated as primary and the hardware based RAID engine as secondary. Such embodiments may find application in legacy systems, where a more current driver-based RAID engine provides functionality not provided for by a hardware-based RAID engine, or in other suitable situations.
Referring next to
The method proceeds to 820, where the device driver associated with the RAID adapter is directed to stop issuing input/output (I/O) commands, data, and/or instructions to the RAID adapter. Note that in some embodiments, directing the device driver to stop issuing I/Os involves simply notifying the device driver that the RAID adapter firmware has encountered an unrecoverable error, and letting the device driver implement its own failure recovery protocol.
The method proceeds from 820 to 830, where, in one embodiment, recovery code included in the RAID adapter maps IOC resources to the host information handling system, so that the device driver can access IOC resources directly, effectively bypassing the hardware RAID engine implemented in the RAID adapter's firmware.
At 840 the recovery code signals the device driver that IOC mapping is complete, and that the driver-based RAID engine included in the device driver can take over implementing the RAID functionality at 850.
In some embodiments, the driver-based RAID engine may provide reduced functionality compared to the hardware-based RAID engine. Additionally, the driver-based RAID engine may perform less efficiently than the hardware-based RAID engine. Thus, in at least one embodiment the device driver generates a recovery mode indication at 860 to inform the OS or other managing software application that the system is using the driver-based RAID engine instead of the hardware-based RAID engine. This indication may permit the OS to alter the way in which it performs disk stores or manages virtual memory to minimize the impact of any performance degradation.
It should be appreciated, however, that although a driver-based RAID engine may incur a performance penalty, use of the driver-based RAID engine as a backup can help to minimize system downtime without requiring the use of additional hardware resources. Additionally, the driver-based RAID engine provides a way to recover from a single point of failure not otherwise available.
It should also be appreciated that although the method of
Although the disclosed embodiments have been described in detail, it should be understood that various changes, substitutions and alterations can be made to the embodiments without departing from their spirit and scope.