Disk controllers are circuits that enable a processor to communicate with a data storage resource. Many data storage arrangements today divide and replicate data among multiple physical drives. Multiple physical drives arranged in such a way may be called a redundant array of independent disks (“RAID”). Disk array products may be equipped with a plurality of controllers to provide failover management. Such disk array controllers manage the physical disk drives and present them to a computer as logical units such that applications executing therein may perceive these disk arrays as a single drive. Failure of one controller may trigger a second controller to substitute for the first. This allows such failure to be transparent to an application. The controllers included in a disk array may be designed to be in communication with each other such that a given controller in the disk array is always aware of the state of other controllers therein.
As noted above, many disk arrays are equipped with a plurality of controllers designed to manage failover scenarios therein. However, many disk controllers, such as host bus adapter (“HBA”) based controllers, are simple controllers that may be arranged within a computer as a peripheral component interconnect (“PCI”) expansion card or may be built into a motherboard. Such controllers may be designed to execute independently of other controllers such that there is no failover capability therein. All operations initiated after the failure of such a controller may never be executed, which may result in permanent loss of data.
In view of the foregoing, aspects of the present disclosure provide a system and method that determine whether a first controller has ceased execution such that the first controller has stopped implementing operations in a storage resource. In another aspect, if it is determined that the first controller has ceased, a configuration file associated with the first controller may be accessed. The configuration file may enable a second controller to substitute for the first controller. In a further aspect, at least one unfinished operation may be implemented in the storage resource. The aspects, features and advantages of the present disclosure will be appreciated when considered with reference to the following description of examples and accompanying figures. The following description does not limit the application; rather, the scope of the disclosure is defined by the appended claims and equivalents.
Computer apparatus 102 and 104 may include processors 202 and 212 and memories 204 and 214 respectively. Memories 204 and 214 may store first driver 206 and second driver 216 respectively. First driver 206 and second driver 216 may be retrieved and executed by their respective processors 202 and 212. The processors may be any number of well known processors, such as processors from Intel® Corporation. Alternatively, the processors may be dedicated controllers for executing operations, such as an application specific integrated circuit (“ASIC”). In addition to processors 202 and 212, a remote maintenance processor may be used to monitor components of computer apparatus 102 and 104 for suspect conditions.
Memories 204 and 214 may be volatile random access memory (“RAM”) devices. The memories may be divided into multiple memory segments organized as dual in-line memory modules (“DIMMs”). Alternatively, memories 204 and 214 may comprise other types of devices, such as memory provided on floppy disk drives, tapes, and hard disk drives, or other storage devices that may be coupled to their respective computers directly or indirectly. Memories 204 and 214 may also include non-volatile random access memory (“NVRAM”) devices, which may be any type of NVRAM, such as phase change memory (“PCM”), spin-torque transfer RAM (“STT-RAM”), or programmable permanent memory (e.g., flash memory). The memory may also include any combination of one or more of the foregoing and/or other devices as well. Although all the components of computer apparatus 102 and 104 are functionally illustrated as being within the same block, it will be understood that the components may or may not be stored within the same physical housing. Furthermore, each computer may actually comprise multiple processors and memories working in tandem.
Computer apparatus 102 and 104 of
First driver 206 and second driver 216 may comprise any set of machine readable instructions to be executed directly (such as machine code) or indirectly (such as scripts) by the processor(s). The instructions of the drivers may be stored in any computer language or format, such as in object code or modules of source code. The instructions may be stored in object code format for direct processing by a processor, or in any other computer language including scripts or collections of independent source code modules that are interpreted on demand or compiled in advance. However, it will be appreciated that first drivers 206 and second driver 216 may be realized in the form of software, hardware, or a combination of hardware and software.
In one example, first driver 206 or second driver 216 may be realized in any non-transitory computer-readable media for use by or in connection with an instruction execution system such as computer apparatus 102 and 104, an ASIC or other system that can fetch or obtain the logic from non-transitory computer-readable media and execute the instructions contained therein. “Non-transitory computer-readable media” can be any media that can contain, store, or maintain programs and data for use by or in connection with the instruction execution system. Non-transitory computer readable media may comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, or semiconductor media. More specific examples of suitable non-transitory computer-readable media include, but are not limited to, a portable magnetic computer diskette such as floppy diskettes or hard drives, a read-only memory (“ROM”), an erasable programmable read-only memory, or a portable compact disc.
First driver 206 may interface processor 202 with controller 211. In turn, controller 211 may interface first driver 206 with disk array 304. Accordingly, first driver 206 may forward data operations, originating from processor 202, to disk array 304 via controller 211. As with first driver 206, second driver 216 may interface processor 212 with controller 221. In turn, controller 221 may interface second driver 216 with disk array 304. The operations forwarded by first driver 206 may be unrelated to the data operations forwarded by second driver 216. First driver 206 may also replicate an operation associated with data, such as an input/output operation, to second driver 216 or vice-versa. While first driver 206 is shown executing in a first domain and second driver 216 is shown executing in a second domain different from the first domain, it is understood that other examples may execute both drivers in the same domain.
One working example of a system and method for managing controller failovers in accordance with aspects of the present disclosure is shown in
In block 302, it may be determined whether a first controller has ceased execution such that the first controller has stopped implementing operations in a storage resource. Referring to the example of
Referring back to
Advantageously, the above-described system and method provides failover capabilities to controllers that may be designed to execute independently, such as inexpensive HBA based controllers. In that regard, users of such controllers may be rest assured that their data will be maintained notwithstanding the failure thereof. In turn, users may have transparent failover management without purchasing expensive enterprise controllers.
Although the disclosure herein has been described with reference to particular examples, it is to be understood that these examples are merely illustrative of the principles of the disclosure. It is therefore to be understood that numerous modifications may be made to the examples and that other arrangements may be devised without departing from the spirit and scope of the disclosure as defined by the appended claims. Furthermore, while particular processes are shown in a specific order in the appended drawings, such processes are not limited to any particular order unless such order is expressly set forth herein. Rather, various steps can be handled in a different order or simultaneously, and steps may be omitted or added.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/023396 | 1/31/2012 | WO | 00 | 5/6/2014 |