smartctl & megaraid: como localizar o nó de dispositivo correto para um adaptador #

2

Eu posso listar drives físicos em todos os adaptadores megaraid usando:

megacli -PDList -aALL 

Isso exibirá um adaptador # para cada adaptador e listará as unidades físicas anexadas a elas.

Os dispositivos individuais na saída PDList também têm um ID de dispositivo que é usado para o comando smartctl, e. para o ID do dispositivo 3:

smartctl -a -d sat+megaraid,3 /dev/sda

Ambos os comandos usam o mesmo ID de dispositivo, então não há problema. Mas como podemos mapear corretamente o adaptador # para um nó de dispositivo?

Executando smartmontools-5.43-1.el6 no CentOS 6. Observando o código-fonte, parece que é necessário um número de barramento / host_no obtido de ioctl SG_GET_SCSI_ID ou SCSI_IOCTL_GET_BUS_NUMBER no nó do dispositivo nomeado. Este é o mesmo número usado como "Adaptador #" na saída MegaCLI?

Na verdade, no meu caso, eu provavelmente poderia usar o hardcoding para / dev / sda, mas gostaria de saber se existe uma maneira melhor.

    
por lmz 13.08.2014 / 05:20

3 respostas

2

Foi assim que eu fiz isso antes. Pode haver maneiras melhores.

Obtenha o ID do barramento PCI para o adaptador da MegaCLI:

/opt/MegaRAID/MegaCli/MegaCli64 -adpgetpciinfo -a0 | grep Bus
Bus Number      : 2

Nesse caso, BUS = 2. Então olhe através da tabela PCI para dispositivos naquele BUS, e procure pela entrada 'hostX':

ls /sys/bus/pci/devices/0000\:0${BUS}\:00.0/ | grep host
host0

Então, HOST = host0.
Agora, procure o alvo nesse diretório de host

ls /sys/bus/pci/devices/0000\:0${BUS}\:00.0/${HOST}/ | grep target
target0:2:0

Nossa ID de alvo SCSI é 0: 2: 0 (host 0: canal 2: alvo 0).

Corresponda o destino SCSI com a saída de 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

O adaptador MegaCLI a0 corresponde a / dev / sda (0: 2: 0 é ~ = 0: 2: 0: 0 neste caso. O 0 final é o ID do LUN)

Se eu seguir o mesmo método para o adaptador a1, recebo um número de barramento de 3, host1 e um valor de destino de 1: 2: 0, que mapeia para / dev / sdb.

    
por 28.11.2014 / 08:38
2

Execute smartctl --scan para imprimir todos os dispositivos anexados, incluindo o ID do dispositivo e o tipo de 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

Outra saída:

# 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

Aqui, megaraid é o tipo de RAID e 5,7 são os IDs de dispositivos

    
por 09.11.2018 / 12:09
1

O nó pode ser encontrado assim:

# megacli -pdlist -a0| grep 'Device Id'
Device Id: 11
Device Id: 12
# smartctl -a -d megaraid,11 /dev/sda
    
por 28.08.2017 / 00:14