Рейтинг:2

Определение пути блока Linux от Redfish

флаг cn

Контекст: я пытаюсь автоматизировать предварительную установку 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": {
            "[email protected]": [
                "Быстрый",                                    
                "Медленный"                                     
            ],                                             
            "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), но пока здесь ничего не помогает с проблемой отображения.

флаг bo
У меня нет доступа к физическому idrac, но [руководство по API] (https://dl.dell.com/topicspdf/idrac9-lifecycle-controller-v4x-series_api-guide_en-us.pdf) для 9 говорит, что есть эта конечная точка: `/redfish/v1/Dell/Системы//Хранилище/Тома/DellVirtualDisk/ ` Одним из таких свойств является: VirtualDiskTargetID. Как выглядит возвращаемое значение для вашего случая `sdc`?
флаг cn
мы используем размер, серийный номер или тип диска (sas/sata/nvme/etc) для сопоставления этой информации между ilo5 redfish и linux. С lsblk -o serial вы получите ту же информацию, что и с атрибутом volumeuniqueidentifier логического тома в API-интерфейсе redfish ilo5. Я понятия не имею, есть ли то же самое в idrac.
флаг cn
чтобы немного уточнить, у dell powerges есть, например, карта босса, которая представляет собой небольшой рейд-контроллер ssd, обычно для системного диска в операционной системе. С помощью действий %pre на наших кикстартах бригадира мы обнаруживаем диски босса (lsblk -o model,kname) и используем их в качестве корневого диска. Для proliants у меня есть другой внутренний инструмент, который проверяет диски sata и sas, и если оба доступны, то sata для root, sas для данных. Такой выбор.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.