从 Redfish 确定 Linux 块路径

从 Redfish 确定 Linux 块路径

背景:我正在尝试在支持 Redfish 的服务器上自动进行预置 Linux 安装。理想情况下,我希望尽可能保持与供应商无关,以便我可以支持多种类型的服务器(例如 Dell、HP、Cisco 等),但我正在使用 Dell R430(具有最新固件的 iDRAC 8)。

描述:我正在尝试找到一些可靠的方法从 Redfish 获取存储卷信息并将其映射到 Linux 可以理解的块设备,以便我可以告诉安装程序要安装到哪个设备。

示例:我使用两个驱动器并使用 Redfish 创建一个 RAID-1 阵列。我现在有这个“卷”对象:

{                                                          
    "@Redfish.Settings": {                                                                                             
        "@odata.context": "/redfish/v1/$metadata#Settings.Settings",                                                                                                                                                                           
        "@odata.type": "#Settings.v1_1_0.Settings",                                                                                                                                                                                            
        "SettingsObject": {                                
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Settings"
        },                                                 
        "SupportedApplyTimes": [
            "Immediate",                                   
            "OnReset",                                     
            "AtMaintenanceWindowStart",
            "InMaintenanceWindowOnReset"
        ]                                                  
    },                                                     
    "@odata.context": "/redfish/v1/$metadata#Volume.Volume",
    "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1",
    "@odata.type": "#Volume.v1_0_3.Volume",
    "Actions": {                                           
        "#Volume.CheckConsistency": {
            "target": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.CheckConsistency"
        },                                                 
        "#Volume.Initialize": {
            "[email protected]": [
                "Fast",                                    
                "Slow"                                     
            ],                                             
            "target": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.Initialize"
        }                                                  
    },                                                     
    "BlockSizeBytes": 512,                                 
    "CapacityBytes": 199447543808,
    "Description": "Virtual Disk 0",
    "Encrypted": false,                                    
    "EncryptionTypes": [                                   
        "NativeDriveEncryption"
    ],                                                     
    "Id": "Disk.Virtual.0:RAID.Integrated.1-1",
    "Identifiers": [],                                     
    "Links": {                                             
        "Drives": [                                        
            {                                              
                "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/Drives/Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1"
            },                                             
            {                                              
                "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/Drives/Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1"
            }                                              
        ],                                                 
        "[email protected]": 2
    },
    "Name": "Virtual Disk 0",
    "Operations": [],                                      
    "OptimumIOSizeBytes": 65536,
    "Status": {                                            
        "Health": "OK",                                    
        "HealthRollup": "OK",
        "State": "Enabled"                                 
    },                                                     
    "VolumeType": "Mirrored"                               
}

这里有什么可以可靠地用来找出 Linux 中的块设备路径吗? 在这种情况下,我知道它是:

$ lsblk /dev/sdc
NAME              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdc                 8:32   0 185.8G  0 disk 
$ ls -al /dev/disk/by-id/ | grep sdc
scsi-361866da08170ff0026091a95033dd20a
wwn-0x61866da08170ff0026091a95033dd20a
$ ls -al /dev/disk/by-path/ | grep sdc
pci-0000:01:00.0-scsi-0:2:0:0

但到目前为止,我还没有发现任何明显的方法可以从 Redfish 输出中获取任何这些值。Linux 端是否有其他标识符可以让我更接近,以便我可以反向工作?或者我可以在 Redfish 的其他地方查询 PCIe 路径?我确实知道 iDRAC 9 可以在机箱级别提供 PCIe 路径,但 iDRAC 8 不能,但即便如此,它们似乎也没有以任何方式映射到这些 Linux 内的路径。

第一次编辑:我研究过使用 Linux 端的各种工具来查询 RAID 控制器(megacli、perccli,以及类似的几个包装 Python 脚本megaclisas.py),但到目前为止,没有任何工具可以帮助解决映射问题。

相关内容