Контекст: я пытаюсь автоматизировать предварительную установку Linux на сервере с поддержкой Redfish. В идеале я хочу, чтобы это было как можно более независимым от производителя, чтобы я мог поддерживать несколько типов серверов (например, 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.Настройки",                                                                                                                                                                                            
        "Объект Настройки": {                                
            "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Settings"
        },                                                 
        «Суппортедапплитаймс»: [
            "Немедленный",                                   
            "При сбросе",                                     
            «На старте окна обслуживания»,
            "ИнМаинтенансвиндовонресет"
        ]                                                  
    },                                                     
    "@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",
    "Действия": {                                           
        "#Volume.CheckConsistency": {
            "target": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.CheckConsistency"
        },                                                 
        "#Volume.Initialize": {
            "InitializeType@Redfish.AllowableValues": [
                "Быстрый",                                    
                "Медленный"                                     
            ],                                             
            "target": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.Initialize"
        }                                                  
    },                                                     
    «Размер блока»: 512,                                 
    "CapacityBytes": 199447543808,
    "Описание": "Виртуальный диск 0",
    «Зашифровано»: ложь,                                    
    «Типы шифрования»: [                                   
        «Нативдрайвэнкриптион»
    ],                                                     
    "Id": "Диск.Виртуальный.0:RAID.Интегрированный.1-1",
    «Идентификаторы»: [],                                     
    "Ссылки": {                                             
        "Драйвы": [                                        
            {                                              
                "@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"
            }                                              
        ],                                                 
        "Диски@odata.count": 2
    },
    "Имя": "Виртуальный диск 0",
    "Операции": [],                                      
    "Оптимиосайзебайт": 65536,
    "Положение дел": {                                            
        «Здоровье»: «ОК»,                                    
        "HealthRollup": "ОК",
        "Состояние": "Включено"                                 
    },                                                     
    "VolumeType": "Зеркальный"                               
}
Есть ли здесь что-нибудь, что я могу надежно использовать, чтобы выяснить, каким будет путь к блочному устройству в Linux? В данном случае я знаю, что это:
$ lsblk /dev/sdc
НАИМЕНОВАНИЕ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА КРЕПЛЕНИЯ
sdc 8:32 0 185.8G 0 диск 
$ 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), но пока здесь ничего не помогает с проблемой отображения.