smartctl & megaraid: как найти правильный узел устройства для адаптера
Я могу перечислить физические диски на всех адаптерах megaraid, используя:
megacli -PDList -aALL
Это отобразит номер адаптера для каждого адаптера, а затем отобразит список физических дисков, подключенных к ним.
Отдельные устройства в выводе PDList также имеют идентификатор устройства, который используется для команды smartctl, например, для идентификатора устройства 3:
smartctl -a -d sat+megaraid,3 /dev/sda
Обе команды используют один и тот же идентификатор устройства, поэтому проблем нет. Но как мы можем правильно сопоставить адаптер # с узлом устройства?
Запуск smartmontools-5.43-1.el6 в CentOS 6. Глядя на исходный код, кажется, что ему нужен номер шины / host_no, полученный из ioctl SG_GET_SCSI_ID
или же SCSI_IOCTL_GET_BUS_NUMBER
на названном узле устройства. Это тот же номер, который используется в качестве "Adapter #" в выходных данных MegaCLI?
На самом деле, в моем случае, мне, вероятно, не помешало бы жестко запрограммировать его в / dev / sda, но я бы хотел знать, есть ли лучший способ.
3 ответа
Вот как я это делал раньше. Там могут быть лучшие способы.
Получите идентификатор шины PCI для адаптера от MegaCLI:
/opt/MegaRAID/MegaCli/MegaCli64 -adpgetpciinfo -a0 | grep Bus
Bus Number : 2
В этом случае BUS=2. Затем просмотрите таблицу PCI для устройств на этой шине и найдите запись "hostX":
ls /sys/bus/pci/devices/0000\:0${BUS}\:00.0/ | grep host
host0
Итак, HOST=host0.
Теперь ищите цель в этом каталоге хоста
ls /sys/bus/pci/devices/0000\:0${BUS}\:00.0/${HOST}/ | grep target
target0:2:0
Наш идентификатор цели SCSI составляет 0:2:0 (хост 0: канал 2: цель 0).
Сопоставить цель SCSI с выводом lsscsi
# lsscsi
[0:2:0:0] disk LSI MR9271-8i 3.24 /dev/sda
[1:2:0:0] disk LSI MR9271-8i 3.24 /dev/sdb
[2:0:0:0] disk ATA INTEL SSDSC2BA80 5DV1 /dev/sdc
Адаптер MegaCLI a0 соответствует /dev/sda (0:2:0 в этом случае ~= 0:2:0:0. Окончательный 0 - это идентификатор LUN)
Если я использую тот же метод для адаптера a1, я получу номер шины 3, host1 и целевое значение 1:2:0, которое отображается в /dev/sdb.
Бежать smartctl --scan
чтобы распечатать все подключенные устройства, включая идентификатор устройства и тип RAID:
# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/bus/0 -d megaraid,0 # /dev/bus/0 [megaraid_disk_00], SCSI device
/dev/bus/0 -d megaraid,1 # /dev/bus/0 [megaraid_disk_01], SCSI device
/dev/bus/0 -d megaraid,2 # /dev/bus/0 [megaraid_disk_02], SCSI device
Еще один вывод:
# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/bus/0 -d megaraid,5 # /dev/bus/0 [megaraid_disk_05], SCSI device
/dev/bus/0 -d megaraid,7 # /dev/bus/0 [megaraid_disk_07], SCSI device
Вот, megaraid
это тип RAID и 5,7
идентификаторы устройств
Узел можно найти так:
# megacli -pdlist -a0| grep 'Device Id'
Device Id: 11
Device Id: 12
# smartctl -a -d megaraid,11 /dev/sda