Get NVMe Drives from iDRAC Redfish

Exploring iDRAC Detected Storage

I used the Storage API endpoint to accomplish this.

From my host I received:

{"@odata.context":"/redfish/v1/$metadata#StorageCollection.StorageCollection","@odata.id":"/redfish/v1/Systems/System.Embedded.1/Storage/","@odata.type":"#StorageCollection.StorageCollection","Description":"Collection Of Storage entities","Members":[{"@odata.id":"/redfish/v1/Systems/System.Embedded.1/Storage/RAID.Slot.4-1"},{"@odata.id":"/redfish/v1/Systems/System.Embedded.1/Storage/RAID.Embedded.1-1"},{"@odata.id":"/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1"},{"@odata.id":"/redfish/v1/Systems/System.Embedded.1/Storage/AHCI.Slot.2-1"}],"Members@odata.count":4,"Name":"Storage Collection"}

I'm running an R840 which is Dell 14G which I know does not have NVMe RAID controllers as an option so I know my NVMe drives must be hanging off the CPU. IE: /redfish/v1/Systems/System.Embedded.1/Storage/CPU.1. I can expect that the BOSS card is hanging off of AHCI and that any SAS/SATA drives are likely on the RAID controller. The results above also imply that the host above runs a mixed backplane given the presence of RAID and CPU.1. Checking CPU.1 gets me:

{
    "@odata.context": "/redfish/v1/$metadata#Storage.Storage",
    "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1",
    "@odata.type": "#Storage.v1_8_0.Storage",
    "Description": "CPU.1",
    "Drives": [
        {
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1"
        },
        {
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.19:Enclosure.Internal.0-1"
        },
        {
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.20:Enclosure.Internal.0-1"
        },
        {
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.23:Enclosure.Internal.0-1"
        },
        {
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.18:Enclosure.Internal.0-1"
        },
        {
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.22:Enclosure.Internal.0-1"
        }
    ],
    "Drives@odata.count": 6,
    "Id": "CPU.1",
    "Links": {
        "Enclosures": [
            {
                "@odata.id": "/redfish/v1/Chassis/Enclosure.Internal.0-1"
            },
            {
                "@odata.id": "/redfish/v1/Chassis/System.Embedded.1"
            }
        ],
        "Enclosures@odata.count": 2
    },
    "Name": "CPU.1",
    "Status": {
        "Health": "OK",
        "HealthRollup": "OK",
        "State": "Enabled"
    },
    "Volumes": {
        "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Volumes"
    }
}

From the above I can deduce that CPU 1 has six drives attached to it. Or does it?

Understand the Behavior of Unqualified Drives

Here is a picture of the front of my server:

Here is the front of my server. You might say, "Wait, there are 7 drives!?" The problem is this 7th drive isn't qualified by Dell. It will still work just fine however, iDRAC won't know how to talk to it so it won't show up:

You can confirm this is the case by checking the Storage->Physical Disks tab inside the iDRAC itself:

Here you can see that I only have the 6 NVMe drives plus two SATA SSDs. While the iDRAC's personality module won't be able to properly sort the drive into Storage it will detect it as a PCIe device and accurately read the vendor information:

Getting a Drive's Stats

We can select one of them with /redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1.

This achieves the desired result and gets a dump of that drive's data. The size is available under the field CapacityBytes.

{
    "@odata.context": "/redfish/v1/$metadata#Drive.Drive",
    "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1",
    "@odata.type": "#Drive.v1_9_0.Drive",
    "Actions": {
        "#Drive.SecureErase": {
            "@Redfish.OperationApplyTimeSupport": {
                "@odata.type": "#Settings.v1_3_0.OperationApplyTimeSupport",
                "SupportedValues": [
                    "Immediate",
                    "OnReset"
                ]
            },
            "target": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1/Actions/Drive.SecureErase"
        }
    },
    "Assembly": {
        "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/Assembly"
    },
    "BlockSizeBytes": 0,
    "CapableSpeedGbs": 7.876923076923077,
    "CapacityBytes": 3200631791616,
    "Description": "PCIe SSD in Slot 21 in Bay 1",
    "EncryptionAbility": "None",
    "EncryptionStatus": "Unencrypted",
    "FailurePredicted": false,
    "HotspareType": "None",
    "Id": "Disk.Bay.21:Enclosure.Internal.0-1",
    "Identifiers": [
        {
            "DurableName": null,
            "DurableNameFormat": null
        }
    ],
    "Identifiers@odata.count": 1,
    "Links": {
        "Chassis": {
            "@odata.id": "/redfish/v1/Chassis/Enclosure.Internal.0-1"
        },
        "PCIeFunctions": [],
        "PCIeFunctions@odata.count": 0,
        "Volumes": [
            {
                "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Volumes/Disk.Bay.21:Enclosure.Internal.0-1"
            }
        ],
        "Volumes@odata.count": 1
    },
    "Location": [],
    "Manufacturer": "Intel Corporation ",
    "MediaType": "SSD",
    "Model": "Dell Express Flash NVMe P4610 3.2TB SFF",
    "Name": "PCIe SSD in Slot 21 in Bay 1",
    "NegotiatedSpeedGbs": 7.876923076923077,
    "Oem": {
        "Dell": {
            "@odata.type": "#DellOem.v1_1_0.DellOemResources",
            "DellDriveSMARTAttributes": null,
            "DellNVMeSMARTAttributes": {
                "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1/Oem/Dell/DellNVMeSMARTAttributes"
            },
            "DellPCIeSSD": {
                "@odata.context": "/redfish/v1/$metadata#DellPCIeSSD.DellPCIeSSD",
                "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1/Oem/Dell/DellPCIeSSDs/Disk.Bay.21:Enclosure.Internal.0-1",
                "@odata.type": "#DellPCIeSSD.v1_4_0.DellPCIeSSD",
                "Bus": "CA",
                "BusProtocol": "PCIE",
                "Description": "An instance of DellPCIeSSD will have PCIe Solid State Drive specific data.",
                "Device": "0",
                "DeviceProtocol": "NVMe-MI1.0",
                "DriveFormFactor": "2.5Inch",
                "FreeSizeInBytes": null,
                "Function": "0",
                "HotSpareStatus": null,
                "Id": "Disk.Bay.21:Enclosure.Internal.0-1",
                "MediaType": "SolidStateDrive",
                "Name": "DellPCIeSSD",
                "PCIeCapableLinkWidth": "x4",
                "PCIeNegotiatedLinkWidth": "x4",
                "ProductID": "a54",
                "RAIDType": "Unknown",
                "RaidStatus": null,
                "Slot": 21,
                "SystemEraseCapability": "CryptographicErasePD",
                "UsedSizeInBytes": 0
            },
            "DellPhysicalDisk": {
                "@odata.context": "/redfish/v1/$metadata#DellPhysicalDisk.DellPhysicalDisk",
                "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/CPU.1/Drives/Disk.Bay.21:Enclosure.Internal.0-1/Oem/Dell/DellDrives/Disk.Bay.21:Enclosure.Internal.0-1",
                "@odata.type": "#DellPhysicalDisk.v1_3_0.DellPhysicalDisk",
                "Certified": null,
                "Connector": null,
                "Description": "An instance of DellPhysicalDisk will have Physical Disk specific data.",
                "DeviceProtocol": "NVMe-MI1.0",
                "DriveFormFactor": "2.5Inch",
                "EncryptionProtocol": null,
                "ForeignKeyIdentifier": null,
                "FreeSizeInBytes": null,
                "Id": "Disk.Bay.21:Enclosure.Internal.0-1",
                "LastSystemInventoryTime": null,
                "LastUpdateTime": null,
                "ManufacturingDay": null,
                "ManufacturingWeek": null,
                "ManufacturingYear": null,
                "Name": "DellPhysicalDisk",
                "NonRAIDDiskCachePolicy": null,
                "OperationName": null,
                "OperationPercentCompletePercent": null,
                "PCIeCapableLinkWidth": "x4",
                "PCIeNegotiatedLinkWidth": "x4",
                "PPID": null,
                "PowerStatus": null,
                "PredictiveFailureState": null,
                "ProductID": "a54",
                "RAIDType": "Unknown",
                "RaidStatus": null,
                "SASAddress": null,
                "Slot": 21,
                "SystemEraseCapability": "CryptographicErasePD",
                "T10PICapability": null,
                "UsedSizeInBytes": 0,
                "WWN": null
            }
        }
    },
    "Operations": [],
    "Operations@odata.count": 0,
    "PartNumber": "TW02CN1TPIHIT9A9013TA02",
    "PhysicalLocation": {
        "PartLocation": {
            "LocationOrdinalValue": 21,
            "LocationType": "Slot"
        }
    },
    "PredictedMediaLifeLeftPercent": 100,
    "Protocol": "PCIe",
    "Revision": "VDV1DP23",
    "RotationSpeedRPM": null,
    "SerialNumber": "PHLN9396002Q3P2BGN",
    "Status": {
        "Health": "OK",
        "HealthRollup": "OK",
        "State": "Enabled"
    },
    "WriteCacheEnabled": false
}