This U.S. non-provisional patent application claims priority under 35 U.S.C. § 119 to Indian Patent Application No. 201641028979 filed on Aug. 25, 2016, in the Indian Intellectual Property Office, the entire content of which is herein incorporated by reference.
Embodiments of the inventive concepts herein generally relate to storage devices. More particularly, embodiments of the inventive concepts relate to data storage systems and methods thereof to access Redundant Array of Independent Disks (RAID) volumes in a pre-boot environment.
RAID technology in data processing systems refers to a Redundant Array of Independent Disks, a system of multiple hard disk drives that share or replicate data among the drives. Multiple versions of the RAID technology have been developed to enable increased data integrity, fault-tolerance, throughput, and/or capacity in comparison to single drives. RAID enables combinations of multiple readily available and low-cost devices into an array with larger capacity, reliability, and/or speed.
The various versions or levels of the RAID technology include RAID level ‘0’ with data striping that breaks data into smaller chunks and distributes the chunks among multiple drives to enhance throughput, but does not duplicate the data. RAID level ‘1’ enables mirroring, which is copying of the data onto at least one other drive, ensuring duplication so that the data lost in a disk failure can be restored. The RAID levels ‘0’ and ‘1’ can be combined to facilitate both throughput and data protection. RAID level ‘5’ stripes both data and parity information across three or more drives and is also fault tolerant.
Further, RAID technology can be implemented either in hardware or software. Software RAID often supports RAID levels ‘0’ and ‘1’ so that RAID functions are executed by a host Central Processing Unit (CPU), possibly causing a reduction in performance of other computations. An additional reduction in performance may also bee seen during performance of the RAID level ‘5’ writes since parity is calculated. Hardware RAID implementations offload processor intensive RAID operations from the host CPU to enhance performance and fault-tolerance and are generally richer in features.
RAID may also be provided in a pre-boot environment. Some conventional methods provide either a hardware RAID controller or an emulated RAID card, which may emulate the hardware RAID controller using software. With the hardware RAID controller and/or the emulated RAID card, RAID volumes may need to be created with physical disks connected to ports exposed by the hardware RAID controller or the emulated RAID card. With the advent of Peripheral Component Interconnect Express (PCIe) based solid-state drives (SSDs) such as Serial ATA Express (SATAe) or Non-Volatile Memory Express (NVMe), the conventional systems and methods may not be suitable. As in ease of the PCIe based SSDs, there may only be one controller which is connected to the bus. Depending on the host controller interface used, it may have a single (as in case of AHCI used with the SATAe) or multiple (as in case of the NVMe) storage unit(s) associated with the controller. RAID volumes created including storage units which are associated with different controllers connected to different PCIe slots cannot be achieved with the above mentioned approach, as the hardware RAID controller and/or the emulated RAID card may not be able to access and/or control physical disks that arc not connected to the ports of the hardware RAID controller and/or the emulated RAID card.
Another conventional method (e.g. Intel Rapid Storage Technology, iRST) enables creating and deleting a RAID across devices connected on different PCIe slots. However, this conventional method is implemented as part of a base firmware of the associated motherboard, and thus this solution is tied with a main board.
An object of the embodiments of the inventive concepts herein is to provide methods to access a RAID volume in a pre-boot environment without dependency on a motherboard.
Another object of the embodiments of the inventive concepts herein is to provide methods for detecting, by a host device, at least two data storage devices by a single BIOS Expansion ROM image.
Another object of the embodiments of the inventive concepts herein is to provide methods for creating, by the host device, a boot connection vector with the at least two data storage devices.
Yet another object of the embodiments of the inventive concepts herein is to provide methods for using a completion queue for admin completion operations and IO complete operations.
Yet another object of the embodiments of the inventive concepts herein is to provide methods for using a submission queue for admin submission operation and IO submission operations.
Accordingly, the embodiments herein provide a data storage device including a host interface, at least two storage units coupled to the host interface. Further, the data storage device includes an Option ROM including a system code configured prior to boot to implement RAID to enable booting to a RAID volume independent of a motherboard.
Accordingly, the embodiments herein provide a data storage system including a host system including a host controller interface. Further, the data storage system includes a plurality of data storage devices connected to the host controller interface of the host system, where each of the plurality of data storage devices includes at least one storage unit and an Option ROM including a system code configured to implement RAID to enable booting to a RAID volume formed from the respective at least one storage unit of the plurality of data storage devices. The host system is configured to execute the system code from the Option ROM to enable the host system to communicate with the plurality of data storage devices to perform IO operations to boot an operating system from the RAID volume.
Accordingly, the embodiments herein provide a host system to access a RAID volume in a pre-boot environment. The host system includes, a processor, and a system code loaded from an Option ROM accessible by the processor. The system code is configured to detect at least one data storage device, including at least two storage units connected to a host controller interface. Further, the Option ROM is configured to create a boot connection vector with the at least two storage units.
Accordingly, the embodiments herein provide a host system to access a RAID volume in a pre-boot environment. The host system includes a processor, a host controller interface connected to the processor, and a memory region, connected to the processor, including a completion queue and a submission queue. The completion queue is configured to be used for administration completion operations and Input/Output (IO) completion operations, and the submission queue is configured to be used for administration submission operations and IO submission operations.
Accordingly, the embodiments herein provide a method to access a RAID volume in a pre-boot environment. The method includes executing, by a host system, a system code from an Option ROM of at least one storage device enabling a pre boot host program to communicate with at least two storage units to perform Input/Output (IO) operations to boot an operating system.
Accordingly, the embodiments herein provide a method to access a RAID volume in a pre-boot environment. The method includes detecting, by a host system, at least one data storage device, comprising at least two storage units, connected to a host controller interface. Further, the method includes creating, by the host system, a boot connection vector with the at least two storage units. The host system includes a processor and a memory connected to the processor, where the memory includes a system code loaded from an Option Read-Only Memory (ROM) of the at least one data storage device.
Accordingly, the embodiments herein provide a computer system including a processor, a memory coupled to the processor, a host controller interface coupled to the processor, and a plurality of storage devices coupled to the host controller interface, the plurality of storage devices including respective Option ROMs. The processor is configured to execute a system code loaded from one of the plurality of Option ROMs to cause the processor perform operations including forming a RAID volume from at least two of the plurality of storage devices.
Accordingly, the embodiments herein provide a first data storage device including a host interface, a first storage unit coupled to the host interface, and an Option ROM including a system code. The system code is configured, when executed on a processor, to perform operations including forming a RAID volume including the first storage unit and a second storage unit of a second data storage device, different from the first data storage device.
These and other aspects of the embodiments herein will be better appreciated and understood when considered in conjunction with the following description and the accompanying drawings. It should be understood, however, that the following descriptions, while indicating preferred embodiments and numerous specific details thereof, are given by way of illustration and not of limitation. Many changes and modifications may be made within the scope of the embodiments herein without departing from the spirit thereof, and the embodiments herein include all such modifications.
The inventive concepts are illustrated in the accompanying drawings, throughout which like reference numbers indicate the same or similar parts in the various figures. The embodiments herein will be better understood from the following description with reference to the drawings, in which:
The embodiments herein and the various features and advantageous details thereof are explained more fully with reference to the non-limiting embodiments that are illustrated in the accompanying drawings and detailed in the following description. Descriptions of well-known components and processing techniques are omitted so as to not unnecessarily obscure the embodiments herein. Also, the various embodiments described herein are not necessarily mutually exclusive, as some embodiments can be combined with one or more other embodiments to form new embodiments. The term “or” as used herein, refers to a non-exclusive or, unless otherwise indicated. The examples used herein are intended merely to facilitate an understanding of ways in which the embodiments herein can be practiced and to further enable those skilled in the art to practice the embodiments herein. Accordingly, the examples should not be construed as limiting the scope of the embodiments herein.
The embodiments herein disclose methods to access a RAID volume in a pre-boot environment. In some embodiments, methods to access the RAID volume may be independent of firmware loaded on the motherboard. The methods include executing, by a host system, a system code from an Option ROM of at least one data storage device enabling a pre boot host program to communicate with at least two storage units to perform IO operations to boot an operating system.
Another embodiment herein discloses methods to access a RAID volume in a pre-boot environment. The methods include detecting, by a host system, at least one data storage device, including at least two storage units, connected to a PCIe slot. Further, the methods may include creating, by the host system, a boot connection vector with the at least two storage units. The host system may include a processor and an Option ROM, connected to the processor. In an embodiment, in case of the normal boot mode, a legacy boot connection vector (BCV) may be created with one storage unit. However, in case of the RAID mode, one BCV may be created for one RAID volume.
In conventional systems and methods, there may be no RAID solution in the pre-boot environment which does not have dependency with the motherboard or hardware. As used herein, a pre-boot environment is a system environment prior to the booting and execution of an operating system controlling the system. Also, conventional systems may not provide an implementation of a RAID solution in a device Option ROM. Unlike conventional systems and methods, the RAID solution of the inventive concepts may be implemented in an Option ROM of the PCIe storage device which eliminates the dependency with the motherboard.
Referring now to the drawings, and more particularly to
As shown in
Unlike conventional systems and methods, the systems and methods of the inventive concepts may enable booting to the RAID volume in the pre-boot environment applicable for Plug and Play (PnP) expansion devices (i.e., residing in the data storage device 200a). Further, in the systems and methods of the inventive concepts, a driver code may interact with the one or more data storage devices 200a and the RAID driver residing in the data storage devices 200a. Further, the systems and methods of the inventive concept may not depend on hardware or software component in the main board or the HBA.
The Option ROM 304 including the system code 304a may be configured prior to booting an operating system to implement the RAID to enable booting to the RAID volume independent of the motherboard. Here, the data storage device 200a and the storage units 302 are independently bootable to an operating system installed in the one or more data storage devices 200a. In an embodiment, the Option ROM 304 and operating system driver may include a same RAID metadata format in the pre-boot environment and a run-time environment. In an embodiment, the pre-boot environment may be the legacy BIOS or the UEFI.
As shown in
In some embodiments, one or more of the following techniques may be implemented in the Option ROM:
Initialization:
Interrupt registration:
Interrupt handling:
As shown in
The Option ROM 304 including the system code 304a can be configured prior to boot to implement the RAID to enable booting to the RAID volume independent of the motherboard. The host system 200b can be configured to execute the system code 304a from the Option ROM 304 of the data storage device 200a enabling a host program to communicate with the storage units 302 to perform IO operations to boot the operating system.
Further, the host system 200b in communication with the Option ROM 304 in the data storage device 200a may be configured to scan the PCIe interface 204b to detect the additional data storage devices 200a. Further, the host system 200b in communication with the Option ROM 304 in the data storage device 200a may be configured to initialize the detected data storage devices 200a to read RAID metadata, where the RAID metadata includes information about the RAID volume, include a Globally Unique Identifier (GLIB), a total size of the RAID volume, and/or a RAID level. Further, the host system 200b in communication with the Option ROM 304 in the data storage devices 200b may be configured to install a RAID IO interface on a detected RAID volume to report the RAID volume as a single IO unit.
Further, the host system 200b can be configured to install a normal IO interface on non-RAID volumes. That is to say that some of the data storage devices 200a accessed by the host system 200b may configured in a RAID volume and others of the data storage devices 200a may be configured in another RAID volume, or in a non-RAID configuration. In an embodiment, the data storage device 200a and the storage units 302 may be independently bootable to the operating system installed in the data storage device 200a. In an embodiment, the Option ROM 304 and OS driver may parse a same RAID metadata format in the pre boot environment and a run-time environment. The pre-boot environment may be one of the Legacy BIOS interface or the UEFI.
Some host controller interfaces specify a different set of request and response queues for IO and management purposes. As used herein, request/response queues used for IO may be queues that contain data and/or commands related to IO operations being performed. As used herein, request/response queues used for management and/or administration may be queues that contain data and/or commands related to managing the device, in a single threaded execution environment, communication between the host and the device can be in a synchronous manner. As illustrated in
In an embodiment, the submission queue 906b may be accessed when a request is posted by the system code 908a to an admin submission queue and a response is posted to an admin completion queue. In an embodiment, the completion queue 906a is accessed when a request is posted to the admin submission queue and a response is posted by the host system 200b to the admin completion queue.
At operation 1004, the method may include scanning the PCIe interface 206b to detect the data storage device 200a. The method may allow the host system 200b to scan the PCIe interface 206b to detect the data storage device 200a. At operation 1006, the method includes initializing the detected data storage device 200a to read the RAID metadata, where the RAID metadata may include information related to the RAID volume including the GUID, the total size of the RAID volume, and/or the RAID level.
At operation 1008, the method may include installing the RAID IO interface for the detected RAID volume to report the RAID volume as a single IO unit. In an embodiment, the host system 200b may install the normal IO interface for the non-RAID volumes. In an embodiment, the Option ROM 304 may include the system code 304a configured to implement RAID and/or to enable booting to the RAID volume independent of the motherboard. In an embodiment, the pre-boot environment may be one of the Legacy BIOS interface and the UEFI.
The various actions, acts, blocks, operations, or the like in the flow chart 1000 may be performed in the order presented, in a different order or simultaneously. Further, in some embodiments, some of the actions, blocks, operations, or the like may be omitted, added, modified, skipped, or the like without departing from the scope of the inventive concepts.
At operation 1102, the method may include detecting the data storage device 200a, comprising the storage units 302, connected to the PCIe slot 206b. At operation 1104, the method may include creating the boot connection vector with the storage units 302.
In an embodiment, the data storage device 200a comprising the storage units 302 may include the system code 304a configured to implement RAID to enable booting to RAID volume in the Option ROM 304.
The various actions, acts, blocks, operations, or the like in the flow chart 1100 may be performed in the order presented, in a different order or simultaneously. Further, in some embodiments, some of the actions, blocks, operations, or the like may be omitted, added, modified, skipped, or the like without departing from the scope of the invention.
At operation 1204, if it is determined that the device is not initialized then, at operation 1206, the method may include initializing the storage device. At operation 1208, the method may include reading the RAID metadata for each namespace and/or logical unit number (LUN) (e.g. disk). At operation 1210, if it is determined that the disk is part of the RAID group then, at operation 1212, the method may include determining whether the disk is a first member in the RAID group.
At operation 1212, if it is determined that the disk is the first member in the RAID group then, at operation 1214, the method may include marking the disk as a RAID member master. At operation 1216, if it is determined that another device is detected then, the method may proceed to operation 1204. At operation 1216, if it is determined that another device is not detected then, the method may include operation 1240 returning control to platform firmware.
At operation 1212, if it is determined that the disk is not the first member in the RAID group then, at operation 1218, the method may include marking the disk as a RAID member slave and method is looped to operation 1216. At operation 1210, if it is determined that the disk is not part of the RAID group then, at operation 1220, the method may include marking the disk as a non RAID member. At operation 1222, the method may include installing a disk IO interface (e.g. non-RAID), and the method may proceed to operation 1240.
At operation 1204, if it is determined that the device is initialized then, at operation 1224, the method may include determining whether the disk is non RAID member. At operation 1224, if it is determined that the disk is the non RAID member then, the method may proceed to operation 1222. At operation 1204, if it is determined that the device is initialized then, at operation 1226, the method may include determining whether the disk is the RAID member master. At operation 1226, if it is determined that the disk is the RAID member master then, at operation 1228, the method includes installing RAID IO interface and the method proceeds to operation 1240.
At operation 1204, if it is determined that the device is initialized then, at operation 1230, the method may include determining whether the disk is the RAID member slave. At operation 1230, if it is determined that the disk is the RAID member slave then, the method may proceed to operation 1240.
The various actions, acts, blocks, operations, or the like in the flow chart 1200 may be performed in the order presented, in a different order or simultaneously. Further, in some embodiments, some of the actions, blocks, operations, or the like may be omitted, added, modified, skipped, or the like without departing from the scope of the inventive concepts.
In an embodiment, consider storage devices C1 to C6 and storage units D1 to D9 as shown in the below table-1:
Initially, for each storage device Cx, perform the following as described below:
The overall computing environment 1302 can be composed of multiple homogeneous or heterogeneous cores, multiple CPUs of different kinds, special media and other accelerators. Further, the plurality of processing units 1308 may be located on a single chip or over multiple chips.
The instructions and codes used for the implementation of the methods described herein may be stored in either the memory unit 1310 and/or the storage 1312. At the time of execution, the instructions may be fetched from the corresponding memory 1310 and/or storage unit 1312, and executed by the processing unit 1308.
Various networking devices 1316 or external I/O devices 1314 may be connected to the computing environment 1302.
The embodiments disclosed herein can be implemented through at least one software program running on at least one hardware device and performing network management functions to control the elements. The elements shown in
It will be understood that although the terms “first,” “second,” etc. are used herein to describe members, regions, layers, portions, sections, components, and/or elements in example embodiments of the inventive concepts, the members, regions, layers, portions, sections, components, and/or elements should not be limited by these terms. These terms are only used to distinguish one member, region, portion, section, component, or element from another member, region, portion, section, component, or element. Thus, a first member, region, portion, section, component, or element described below may also be referred to as a second member, region, portion, section, component, or element without departing from the scope of the inventive concepts. For example, a first element may also be referred to as a second element, and similarly, a second element may also be referred to as a first element, without departing from the scope of the inventive concepts.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of example embodiments. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes,” and/or “including,” if used herein, specify the presence of stated features, integers, steps, operations, elements and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items. Expressions such as “at least one of,” when preceding a list of elements, modify the entire list of elements and do not modify the individual elements of the list.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by those of ordinary skill in the art to which the inventive concepts pertain. It will also be understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
When a certain example embodiment may be implemented differently, a specific process order may be performed differently from the described order. For example, two consecutively described processes may be performed substantially at the same time or performed in an order opposite to the described order.
It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present.
Like numbers refer to like elements throughout. Thus, the same or similar numbers may be described with reference to other drawings even if they are neither mentioned nor described in the corresponding drawing. Also, elements that are not denoted by reference numbers may be described with reference to other drawings.
The foregoing description of the specific embodiments will so fully reveal the general nature of the embodiments herein that others can, by applying current knowledge, readily modify or adapt for various applications such specific embodiments without departing from the inventive concepts, and, therefore, such adaptations and modifications should and are intended to be comprehended within the meaning and range of equivalents of the disclosed embodiments of the inventive concepts. It is to be understood that the phraseology or terminology employed herein is for the purpose of description and not of limitation. Therefore, while the embodiments herein have been described in terms of certain embodiments, those skilled in the art will recognize that the embodiments herein can be practiced with modification within the spirit and scope of the inventive concepts as described herein.
Number | Date | Country | Kind |
---|---|---|---|
201641028979 | Aug 2016 | IN | national |