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
Другие вопросы по тегам