MegaCli: obtenha o nome do dispositivo / dev / sd * para uma unidade lógica

16

Digamos que eu saiba que a unidade que eu quero está no adaptador 8, unidade virtual 0, existe uma maneira de obter o nome do dispositivo Linux (por exemplo /dev/sdt)? Estou no RHEL 6.2.

-pdlistexibe um valor WWN para cada unidade física, mas isso não ajuda muito. -ldinfonão imprime um WWN ou qualquer outro valor de identificação.

# ./MegaCli64 -pdlist -a8 | grep WWN
WWN: 500051610003776C
WWN: 5000516100037BFC
WWN: 5000516100038090
WWN: 50005161000284F4
WWN: 5000516100037C0C
WWN: 5000516100037C5C
WWN: 50005161000310C8
WWN: 5000516100037F4C

# ls -1dt /dev/disk/by-id/wwn*
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd142c12c84d
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd142c0973e6
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd132c002573
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd122bf6e2f6
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd122beda52a
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd112be46f10
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd112bdb3ffb
/dev/disk/by-id/wwn-0x600605b0043e52d01721fd102bd20f14

# ./MegaCli64 -v                       
 MegaCLI SAS RAID Management Tool  Ver 8.03.08 Mar 15, 2012
twblamer
fonte

Respostas:

10

Você deve poder comparar o número de série do disco -pdlistcom a saída de lshw.

# MegaCLI -pdlist -a0 | grep "Inquiry Data:"
Inquiry Data:       XXXXXXXXXXXXHitachi YYYYYYYY                 ZZZZZZ
...

Em seguida, procure a saída do lshwnúmero de série. O nome do dispositivo estará no logical namecampo.

Não posso verificar isso porque todos os meus discos estão em um volume.

Identificação de unidades lógicas

Compare o Target IdMegaCLI com o destino do barramento scsi para o dispositivo. Em lshwque é bus info.

# MegaCli -ldinfo -Lall -aall 


Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-6, Secondary-0, RAID Level Qualifier-3
Size                : 7.275 TB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 6
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
Access Policy       : Read/Write
Disk Cache Policy   : Disabled
Ongoing Progresses:
  Check Consistency        : Completed 17%, Taken 89 min.
Encryption Type     : None


Virtual Drive: 1 (Target Id: 1)
Name                :
RAID Level          : Primary-6, Secondary-0, RAID Level Qualifier-3
Size                : 7.275 TB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 6
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
Access Policy       : Read/Write
Disk Cache Policy   : Disabled
Ongoing Progresses:
  Check Consistency        : Completed 17%, Taken 89 min.
Encryption Type     : None

Partida lshw:

# lshw -class disk
...
              *-enclosure UNCLAIMED
               description: SCSI Enclosure
               product: Bobcat
               vendor: LSI CORP
               physical id: 1.75.0
               bus info: scsi@0:1.117.0
               version: 0504
               configuration: ansiversion=5
          *-disk:0
               description: SCSI Disk
               product: MR9260-16i
               vendor: LSI
               physical id: 2.0.0
               bus info: scsi@0:2.0.0
               logical name: /dev/sda
               version: 2.12
               serial: svDASJ-f8kM-4qp5-BswW-3IKC-DDyA-djz8N7
               size: 7450GiB
               capacity: 7450GiB
               capabilities: lvm2
               configuration: ansiversion=5
          *-disk:1
               description: SCSI Disk
               product: MR9260-16i
               vendor: LSI
               physical id: 2.1.0
               bus info: scsi@0:2.1.0
               logical name: /dev/sdb
               version: 2.12
               serial: NHUvUy-1tm4-aGYW-g6DZ-t1Z9-gxW8-JhvFfL
               size: 7450GiB
               capacity: 7450GiB
               capabilities: lvm2
               configuration: ansiversion=5
Jeff Strunk
fonte
11
Eu apenas tentei isso, mas tenho unidades IBM e, para mim, parece que não há correlação entre o número de série que aparece -pdliste o número de série que aparece lshw. Obrigado pela dica embora.
Twblamer
Pode ser que sua placa controladora não esteja expondo o número de série real e crie um número de série do volume para cada disco.
precisa
Devo acrescentar que esta é uma configuração JBOD com cada unidade configurada em uma matriz RAID0 de uma unidade. Então, eu esperaria que o número de série da unidade física estivesse oculto, mas gostaria de saber se posso obter algumas informações da configuração da unidade lógica.
Twblamer 19/04/12
11
Looks como JBOD é desativado no adaptador por padrão, mas pode habilitá-lo:./MegaCli64 -AdpSetProp -EnableJBOD 1 -a0
twblamer
11
Para mostrar apenas discos, use: disco lshw de classe
Dan Mazzini
7

Acabei de adicionar algum suporte ao meu fork do megaclisas-status para corresponder a unidade lógica a um dispositivo nativo do SO. Aqui está um exemplo de saída:

$ sudo ./megaclisas-status
-- Controller information --
-- ID | H/W Model                  | RAM    | Temp | Firmware     
c0    | LSI MegaRAID SAS 9271-8i   | 1024MB | 88C  | FW: 23.32.0-0009 
c1    | LSI MegaRAID SAS 9280-4i4e | 512MB  | N/A  | FW: 12.15.0-0205 

-- Array information --
-- ID | Type   |    Size |  Strpsz |   Flags | DskCache |  Status |  OS Path | InProgress   
c0u0  | RAID-1 |   1817G |  256 KB | ADRA,WT |  Enabled | Optimal | /dev/sda | None         
c0u1  | RAID-5 |  16370G |  512 KB | ADRA,WB |  Enabled | Optimal | /dev/sdb | None         
c1u0  | RAID-0 |    476G |  256 KB | ADRA,WT |  Enabled | Optimal | /dev/sdc | None         

-- Disk information --
-- ID   | Type | Drive Model                                  | Size     | Status          | Speed    | Temp | Slot ID  | LSI Device ID
c0u0p0  | HDD  | WD-WMC300422505WDC WD20EFRX-68AX9N0 80.00A80 | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 31C  | [252:4]  | 17      
c0u0p1  | HDD  | WD-WMC300421817WDC WD20EFRX-68AX9N0 80.00A80 | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 31C  | [252:5]  | 18      
c0u1p0  | HDD  | WD-WX41DA40LCE5WDC WD60EFRX-68MYMN1 82.00A82 | 5.456 TB | Online, Spun Up | 6.0Gb/s  | 32C  | [252:0]  | 15      
c0u1p1  | HDD  | WD-WX41DA40L42RWDC WD60EFRX-68MYMN1 82.00A82 | 5.456 TB | Online, Spun Up | 6.0Gb/s  | 31C  | [252:1]  | 12      
c0u1p2  | HDD  | WD-WX61DA4HAKFZWDC WD60EFRX-68MYMN1 82.00A82 | 5.456 TB | Online, Spun Up | 6.0Gb/s  | 32C  | [252:6]  | 14      
c0u1p3  | HDD  | WD-WX41DA40LEF1WDC WD60EFRX-68MYMN1 82.00A82 | 5.456 TB | Online, Spun Up | 6.0Gb/s  | 31C  | [252:7]  | 16      
c1u0p0  | SSD  | 0000000011310344CFE3M4-CT512M4SSD2 070H      | 476.4 Gb | Online, Spun Up | 6.0Gb/s  | N/A  | [252:1]  | 11      

-- Unconfigured Disk information --

A ferramenta em si está disponível em: http://step.polymtl.ca/~coyote/dist/megaclisas-status/megaclisas-status

Eu espero que isso ajude,

Vincent

Vincent S. Cojot
fonte
Isso funciona muito bem, mesmo no Centos 6, obrigado!
SvennD 15/01
2
Por favor, note que a ferramenta foi aceita e fundiu a montante assim uma versão mais recente está em: raw.githubusercontent.com/eLvErDe/hwraid/master/wrapper-scripts/...
Vincent S. Cojot
Uau, isso me salvou de dor de cabeça. Funciona lindamente. Graças
biocyberman
Tentei isso, mas só tenho números na coluna os path #
hek2mgl
Por favor, relate quaisquer problemas em: github.com/eLvErDe/hwraid/issues
Vincent S. Cojot
6

Para quem se deparar com essa questão e usar storcli(sucessor de MegaCLI), é possível mapear uma unidade virtual para o disco visto pelo sistema operacional com o seguinte:

$ /opt/MegaRAID/storcli/storcli64 /c0/v0 show all | grep NAA
SCSI NAA Id = 6001676001750006201086de0bd7f605
$ ls -al /dev/disk/by-id/ | grep wwn-0x6001676001750006201086de0bd7f605
lrwxrwxrwx 1 root root   9 Jan 23 10:55 wwn-0x6001676001750006201086de0bd7f605 -> ../../sdk

Testado com o storcli-1.21.06download em: https://docs.broadcom.com/docs/1.21.06_StorCLI

Dorian Gambin
fonte
5

Em vez de usar lshw, acho que você pode usar apenas /dev/disk/by-pathpara obter o relacionamento entre o ID de destino scsi e o nome do dispositivo lógico (sdX).

targetId=0;dev=`ls -l /dev/disk/by-path/ | grep -E "scsi-[0-9]:[0-9]:${targetId}:[0-9] " | awk '{print($11)}'`; echo ${dev##*\/}

  deviceId=$1
  ldPdInfo=`$MegaCommand -LdPdInfo -aALL | grep -E 'Virtual Drive|Device Id'`
  if [ $ldPdInfo ]; then
    targetId=`echo $ldPdInfo | awk '{a[NR]=$0} END {while (NR) print a[NR--]}' | awk "/Device Id: ${deviceId}$/,/Virtual Drive/" | grep -Eo 'Target Id: [0-9]' | grep -Eo '[0-9]'`
    dev=`ls -l /dev/disk/by-path/ | grep -E "scsi-[0-9]:[0-9]:${targetId}:[0-9] " | awk '{print($11)}'`
  else
    wwn=`$MegaCommand -PdList -aALL | awk "/Device Id: ${deviceId}$/,/WWN/" | grep "WWN" | awk '{print($2)}'`
    # wwn=`echo "obase=16;ibase=16; $wwn-1" | bc`
    dev=`ls -l /dev/disk/by-id/ | grep -i -E "wwn-0x${wwn:0:-1}[0-9a-z] " | awk '{print($11)}'`
  fi
  devName=${dev##*\/}
  echo $devName
Harry Lee
fonte
Curto e grosso.
Michael R. Hines
3

Tenho lidado com isso em vários servidores novos recentemente e encontrei uma solução ! Não estamos usando RAID na placa "RAID", apenas usando as unidades SAS como JBOD. Os /dev/disk/by-idmapeamentos estão desativados por um (ou alguns) do SAS Address. Isso parece bizarro, mas funciona em dezenas de servidores nos quais eu testei. Também recebi confirmação independente de que isso funciona para outros.

megamap é um script Perl curto que implementa a descoberta acima. Ele produz um mapa da unidade Linux sd*para o ID da unidade MegaRaid e também exibe o WWN do Linux. Depois de usá-lo na produção por um tempo, também adicionei megablinke megaunblinkpara controlar o LED piscando "venha me consertar". Esse recurso me salvou de extrair a unidade errada do servidor. Envie relatórios de erros no github .

logotipo[imagem agradecida a Scott Vrable ]

filhotes
fonte
Eu adicionei um utilitário chamado megablinkao mesmo repositório do github que piscará o disco ruim para o técnico de campo encontrá-lo facilmente.
chicks
Com base em um relatório de bug e em correções subsequentes, lancei uma nova versão do megamapon github.
chicks
2

O comando de Harry foi muito útil, mas eu precisava dar um passo adiante e determinar o dispositivo pci porque tenho vários adaptadores SAS em minha configuração. Achei que eu deveria compartilhar:

  vdisk=1

  MegaCommand=/opt/MegaRAID/CmdTool2/CmdTool2

  vendor_id=$($MegaCommand -AdpAllInfo -aALL \
    | grep -E "^Vendor Id" \
    | sed 's/.*: //g' )

  device_id=$($MegaCommand -AdpAllInfo -aALL \
    | grep -E "^Device Id" \
    | sed 's/.*: //g' )

  pci_address=$(lspci -n \
    | grep "$vendor_id" \
    | grep "$device_id" \
    | awk '{print $1}' )

  dev_sdx=$($MegaCommand -LDInfo -LALL -aALL \
    | grep "^Virtual Drive: $vdisk (" \
    | tr -d ")" \
    | sed 's/.*Target Id: //g')

  dev_sdx=$(ls -l /dev/disk/by-path/ \
    | grep -E "$pci_address-scsi-[0-9]:[0-9]:$dev_sdx:[0-9] " \
    | grep sd  \
    | sed 's/.*\///g')

  echo "Found /dev/ as /dev/$dev_sdx"
TaylorSanchez
fonte
1

Existe uma ferramenta alternativa chamada lsiutilque foi descontinuada. Se funcionar para o seu cartão, pode ser mais fácil usar: http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip

Depois de selecionar sua placa controladora, a opção 42 deve exibir os nomes do sistema operacional. Eu uso isso no Solaris e os discos estão no modo JBOD real, em vez de várias unidades lógicas RAID 0 de disco único.

Jeff Strunk
fonte
Fiz o download do zip e, infelizmente, não parece funcionar para o meu cartão + SO. Parece que eu posso estar preso.
Twblamer 19/04/12
1

Eu estava pesquisando pela mesma coisa e encontrei este post - http://sysadm.pp.ua/linux/monitoring-systems/python-lsi-megaraid-monitoring.html . Você pode usar scripts python e bash, que fornecem todas as informações necessárias:

root@s11:~# bash megaraid.sh log

-- Array information --
-- ID | Type   |    Size |  Strpsz | Flags | DskCache |   Status |  OS Path | InProgress
c0u0  | RAID-5 |   2725G |   64 KB | RA,WT |  Default | Degraded | /dev/sda | None
-- Disk information --
-- ID   | Type | Drive Model                               | Size     | Status          | Speed    | Temp | Slot ID  | Device ID
c0u0p2  | HDD  | SEAGATE ST1000NM0001 0002Z1N4K2PY         | 930.3 Gb | Failed          | 6.0Gb/s  | 29C  | [4:2]    | 15
alex
fonte