<div dir="ltr">Hello everyone,<div><br></div><div>As discussed in today's meeting, this is related to the demo represented by Noor, last year, related to performing RAID configurations in Airship via Metal3 (and Ironic).<br>Add RAID to example hardwareprofile (I50c82ce5) · Gerrit Code Review (<a href="http://opendev.org">opendev.org</a>)<br><br>Through Airship, the user should be able to perform RAID configurations on their hardware. The user can specify the RAID controller names and their associated disks, along with the required RAID level, the desired number of disks and the amount of storage required. <br>Here is the proposal for specifying the RAID configuration for a bare metal host via Metal3:<br><a href="https://github.com/metal3-io/metal3-docs/pull/148/files">https://github.com/metal3-io/metal3-docs/pull/148/files</a><br><br>In terms of the CRD, the current implementation of the RAID has the following sections in it, for hardware RAID:<br>spec:<br>  raid:<br>    hardwareRAIDVolumes:<br>      - sizeGibiBytes: 1000<br>        level: 1<br>        name: volume-name<br>        rotational: true<br>        numberOfPhysicalDisks: 2<br>We propose to add fields into the CRD, in the following manner:<br>spec:<br>  raid:<br>    hardwareRAIDVolumes:<br>      - sizeGibiBytes: 1000<br>        level: 1<br>        name: volume-1<br>        rotational: true<br>        numberOfPhysicalDisks: 2<br>        physicalDisks:<br>          - diskName: Disk-1<br>          - diskName: Disk-2<br>        controller: primary-controller<br>      - sizeGibiBytes: 2000<br>        level: 0<br>        name: volume-2<br>        rotational: false<br>        numberOfPhysicalDisks: 2<br>        physicalDisks:<br>          - diskName: Disk-3<br>          - diskName: Disk-4<br>        controller: secondary-controller-2<br><br>However, it remains unclear how the user would have the in-depth knowledge of the RAID controllers available to them, along with the vendor-specific disk names. <br>Example disk names (Dell): <br>['Disk.Bay.0:Enclosure.Internal.0-1:RAID.Intergrated.1-1', 'Disk.Bay.2:Enclosure.Internal.0-1:RAID.Integrated.1-1', 'Disk.Bay.3:Enclosure.Internal.0-1:RAID.Integrated.1-1',...]<br>Example disk names (HP):<br>['2I:1:1', '2I:1:2', '2I:1:3',...]<br><br>Example RAID Controllers (Dell):<br>[‘Boss-F1 RAID Controller’, 'Dell PowerEdge RAID Controller H740P', ' Dell PowerEdge RAID Controller H830',...]<br>Example RAID  controller (HP):<br>['HP Smart Array P400 Controller', 'HPE Smart Array E208i-a Controller', 'HPE Smart Array P816i-a Controller',...]<br><br>One possible solution is to let the user specify the required RAID level, number of disks and storage capacity needed. Metal3 could then validate this request using the Ironic drivers (e.g. Redfish driver, iDRAC driver etc.) in order to ensure the required hardware is available in the cluster. If it is available, the RAID configuration can be applied. Ifnot, the user can be informed about the error.<br><br>Another solution is that Airship can perform inventory of the storage subsystems available in the cluster, and so the user can construct a RAID configuration accordingly. Conversely, the logic to select the physical disks and associated controllers may be implemented in Airship, whilst the user just specifies the high level requirements.<br><br>One issue is that Redfish requires the explicit RAID controller and disk names in order to do the RAID configuration, but it would be more convenient if the user did not have to know the low level details of their system.<br>Here is the Redfish Action URI: {Base URI of target resource}/Actions/Volume.ChangeRAIDLayout<br>(Provided in 6.109.4.2 of Redfish Resource and Schema Guide (<a href="http://dmtf.org">dmtf.org</a>))<br><br>The disk names can be generated using the Redfish logic constructing a human friendly identifier or label for hardware devices. <a href="https://github.com/DMTF/Redfish-Tacklebox/blob/e429f70a79cfe288756618498ce485ab4be37131/redfish_utilities/inventory.py#L192">https://github.com/DMTF/Redfish-Tacklebox/blob/e429f70a79cfe288756618498ce485ab4be37131/redfish_utilities/inventory.py#L192</a><br><br>Disk selection logic needs to be implemented in the most appropriate place. Airship may require that the user be unaware of the storage subsystem details when requesting the RAID config. Ironic requires a vendor independent implementation for this purpose.<br><br>Here is relevant work done in metal3 to support RAID configuration in baremetal servers, using the Fujitsu iRMC driver:<br><a href="https://github.com/metal3-io/baremetal-operator/issues/206">https://github.com/metal3-io/baremetal-operator/issues/206</a><br><a href="https://github.com/metal3-io/baremetal-operator/pull/292">https://github.com/metal3-io/baremetal-operator/pull/292</a><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><br></div><div><br></div><div>Warm Regards,</div><div><br></div>Zainub Wahid<div>Network Design Engineer II,</div><div><span style="color:rgb(34,34,34);font-family:Arial,sans-serif;font-size:13px;white-space:pre-wrap">xFlow Research Inc.</span><br></div><div><span style="color:rgb(34,34,34);font-family:Arial,sans-serif;font-size:13px;white-space:pre-wrap">+923044506900</span></div><div><span style="color:rgb(34,34,34);font-family:Arial,sans-serif;font-size:13px;white-space:pre-wrap"><a href="mailto:zainub.wahid@xflowresearch.com" target="_blank">zainub.wahid@xflowresearch.com</a></span></div><div><a href="http://www.xFlowResearch.com" target="_blank">www.xFlowResearch.com</a></div></div></div></div></div></div>