Context: Încerc să automatizez o instalare Linux prestabilită pe un server compatibil Redfish. În mod ideal, vreau să păstrez acest lucru cât mai independent de furnizor, astfel încât să pot suporta mai multe tipuri de servere (adică Dell, HP, Cisco etc.), dar lucrez la un Dell R430 (iDRAC 8 cu cel mai recent firmware).
Descriere: Încerc să găsesc o modalitate fiabilă de a prelua informații despre un volum de stocare de la Redfish și de a le mapa pe un dispozitiv bloc pe care Linux îl poate înțelege, astfel încât să pot spune instalatorului meu pe ce dispozitiv să instalez.
Exemplu: iau două unități și folosind Redfish îmi creez o matrice RAID-1. Acum am acest obiect „Volum”:
{
„@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”: [
"Imediat",
„OnReset”,
„LaMaintenanceWindowStart”,
„ÎnMaintenanceWindowOnReset”
]
},
"@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",
„Acțiuni”: {
„#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]”: [
"Rapid",
"Încet"
],
„țintă”: „/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.Initialize”
}
},
„BlockSizeBytes”: 512,
„CapacityBytes”: 199447543808,
„Descriere”: „Disc virtual 0”,
„criptat”: fals,
„EncryptionTypes”: [
„NativeDriveEncryption”
],
„Id”: „Disk.Virtual.0:RAID.Integrated.1-1”,
„Identificatori”: [],
„Linkuri”: {
"Unități": [
{
„@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
},
„Nume”: „Disc virtual 0”,
„Operațiuni”: [],
„OptimumIOSizeBytes”: 65536,
"Stare": {
„Sănătate”: „OK”,
„HealthRollup”: „OK”,
„State”: „Activat”
},
„VolumeType”: „În oglindă”
}
Există ceva aici pe care să îl pot folosi în mod fiabil pentru a-mi da seama care va fi calea dispozitivului bloc în Linux? În acest caz, știu că este:
$ lsblk /dev/sdc
NUME MAJ:MIN RM DIMENSIUNE RO TIP PUNCT DE MONTARE
sdc 8:32 0 185.8G 0 disc
$ 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
Dar până acum nu văd nicio modalitate evidentă de a trece de la ieșirea Redfish la oricare dintre aceste valori. Există poate un alt identificator pe partea Linux care m-ar putea apropia mai mult, astfel încât să pot lucra înapoi? Sau altundeva în Redfish pot căuta calea PCIe? Știu că iDRAC 9 poate oferi căi PCIe la nivel de șasiu, dar iDRAC 8 nu poate, dar chiar și atunci nu par să se mapeze în niciun fel la aceste căi în Linux.
Prima editare: m-am uitat la utilizarea diferitelor instrumente pe partea Linux pentru a interoga controlerul RAID (megacli, perccli, mai multe scripturi Python wrapper, cum ar fi acestea megaclisas.py
), dar până acum nimic aici nu ajută la problema cartografierii.