บริบท: ฉันกำลังพยายามทำให้การติดตั้ง Linux แบบ preseed เป็นแบบอัตโนมัติบนเซิร์ฟเวอร์ที่รองรับ 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.Settings",
"SettingsObject": {
"@odata.id": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Settings"
},
"เวลาสมัครที่รองรับ": [
"ทันที",
"เมื่อรีเซ็ต",
"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",
"การดำเนินการ": {
"#Volume.CheckConsistency": {
"เป้าหมาย": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.CheckConsistency"
},
"#Volume.Initialize": {
"[email protected]": [
"เร็ว",
"ช้า"
]
"เป้าหมาย": "/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1/Actions/Volume.Initialize"
}
},
"BlockSizeBytes": 512,
"ความจุไบต์": 199447543808,
"คำอธิบาย": "ดิสก์เสมือน 0",
"เข้ารหัส": เท็จ
"ประเภทการเข้ารหัส": [
"NativeDriveEncryption"
]
"รหัส": "Disk.Virtual.0:RAID.Integrated.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"
}
]
"[email protected]": 2
},
"ชื่อ": "ดิสก์เสมือน 0",
"การดำเนินการ": [],
"Optimum IOSizeBytes": 65536,
"สถานะ": {
"สุขภาพ": "ตกลง",
"HealthRollup": "ตกลง",
"สถานะ": "เปิดใช้งาน"
},
"VolumeType": "มิเรอร์"
}
มีอะไรที่นี่ที่ฉันสามารถใช้เพื่อหาเส้นทางอุปกรณ์บล็อกใน Linux ได้อย่างน่าเชื่อถือหรือไม่ ในกรณีนี้ ฉันรู้ว่ามันคือ:
$lsblk /dev/sdc
ชื่อ MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 185.8G 0 ดิสก์
$ ls -al /dev/disk/by-id/ | เกรป เอสดีซี
scsi-361866da08170ff0026091a95033dd20a
wwn-0x61866da08170ff0026091a95033dd20a
$ ls -al /dev/disk/by-path/ | เกรป เอสดีซี
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 ของ wrapper หลายตัวสำหรับสิ่งเหล่านี้ megaclisas.py
) แต่จนถึงขณะนี้ยังไม่มีอะไรช่วยแก้ปัญหาการทำแผนที่ได้