dell / iDRAC-Redfish-Scripting

Python and PowerShell scripting for Dell EMC PowerEdge iDRAC REST API with DMTF Redfish
GNU General Public License v2.0
606 stars 279 forks source link

Support for raid levels 6 and 60 #99

Closed digi-talo closed 4 years ago

digi-talo commented 4 years ago

While it is now possible to create raid arrays with Redfish (which is great), unfortuantely RAID 6 (and 60) are missing which makes it unusable for us. Are there any plans to add this in the near future?

texroemer commented 4 years ago

Hi @digi-talo

Currently DMTF doesn't support RAID 6 or 60 but this request has been already escalated to DMTF to add support by Dell but we haven't heard back an ETA on when they will add support if they decide to.

If you want to use Redfish to create RAID 6 or 60, you will have to use OEM Server Configuration Profile (SCP) feature.

Example below is SCP file which i can use to create RAID 60 on MX740c server.

<SystemConfiguration Model="PowerEdge MX740c" ServiceTag="MP702ST" TimeStamp="Thu Mar 12 15:02:39 2020"> 
<!--Export type is Clone,XML,Selective--> 
<!--Exported configuration may contain commented attributes. Attributes may be commented due to dependency, destructive nature, preserving server identity or for security reasons.--> 
<Component FQDD="RAID.Mezzanine.1C-1"> 
    <Attribute Name="RAIDresetConfig">True</Attribute> 
    <Attribute Name="RAIDforeignConfig">Clear</Attribute> 
    <Attribute Name="CurrentControllerMode">RAID</Attribute> 
    <Attribute Name="RAIDrekey">False</Attribute> 
    <Attribute Name="EncryptionMode">None</Attribute> 
    <Attribute Name="RAIDprMode">Automatic</Attribute> 
    <Attribute Name="RAIDPatrolReadUnconfiguredArea">Enabled</Attribute> 
    <Attribute Name="RAIDloadBalancedMode">Automatic</Attribute> 
    <Attribute Name="RAIDccMode">Normal</Attribute> 
    <Attribute Name="RAIDcopybackMode">On</Attribute> 
    <Attribute Name="RAIDpersistentHotspare">Disabled</Attribute> 
    <Attribute Name="RAIDEnhancedAutoImportForeignConfig">Enabled</Attribute> 
    <Attribute Name="RAIDrebuildRate">30</Attribute> 
    <Attribute Name="RAIDbgiRate">30</Attribute> 
    <Attribute Name="RAIDccRate">30</Attribute> 
    <Attribute Name="RAIDreconstructRate">30</Attribute> 
    <Component FQDD="Disk.Virtual.0:RAID.Mezzanine.1C-1"> 
        <Attribute Name="RAIDaction">Create</Attribute> 
        <Attribute Name="LockStatus">Unlocked</Attribute> 
        <Attribute Name="BootVD">False</Attribute> 
        <Attribute Name="RAIDinitOperation">None</Attribute> 
        <Attribute Name="DiskCachePolicy">Default</Attribute> 
        <Attribute Name="RAIDdefaultWritePolicy">WriteBack</Attribute> 
        <Attribute Name="RAIDdefaultReadPolicy">ReadAhead</Attribute> 
        <Attribute Name="Name">Virtual Disk 0</Attribute> 
        <Attribute Name="Size">1197759004672</Attribute> 
        <Attribute Name="StripeSize">512</Attribute> 
        <Attribute Name="SpanDepth">2</Attribute> 
        <Attribute Name="SpanLength">4</Attribute> 
        <Attribute Name="RAIDTypes">RAID 60</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.0:Enclosure.Internal.0-0:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.0:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.10:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.11:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.12:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.13:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.14:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
        <Attribute Name="IncludedPhysicalDiskID">Disk.Bay.15:Enclosure.Modular.4:RAID.Mezzanine.1C-1</Attribute> 
    </Component> 
    <Component FQDD="Enclosure.Internal.0-0:RAID.Mezzanine.1C-1"> 
        <Component FQDD="Disk.Bay.3:Enclosure.Internal.0-0:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.2:Enclosure.Internal.0-0:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.0:Enclosure.Internal.0-0:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.1:Enclosure.Internal.0-0:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
    </Component> 
    <Component FQDD="Enclosure.Modular.8:RAID.Mezzanine.1C-1"/> 
    <Component FQDD="Enclosure.Modular.5:RAID.Mezzanine.1C-1"/> 
    <Component FQDD="Enclosure.Modular.6:RAID.Mezzanine.1C-1"/> 
    <Component FQDD="Enclosure.Modular.7:RAID.Mezzanine.1C-1"/> 
    <Component FQDD="Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
        <Component FQDD="Disk.Bay.4:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.10:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.12:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.9:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.6:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.5:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.7:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.8:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.14:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.11:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.15:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.13:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.1:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.2:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.0:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
        <Component FQDD="Disk.Bay.3:Enclosure.Modular.4:RAID.Mezzanine.1C-1"> 
            <Attribute Name="RAIDHotSpareStatus">No</Attribute> 
            <Attribute Name="RAIDPDState">Ready</Attribute> 
        </Component> 
    </Component> 
    <Attribute Name="RAIDremoveControllerKey">False</Attribute> 
</Component> 
</SystemConfiguration> 
digi-talo commented 4 years ago

Yeah that's basically what we are doing now :) HPe extended the specification (I suppose?) and added raid 6 and 60.

texroemer commented 4 years ago

Hi @digi-talo

Dell will look into adding OEM extensions to DMTF RAID volume creation for RAID 6 and 60 in future iDRAC releases.

Thanks