MegaCli: Obter o nome do dispositivo / dev / sd * paira uma unidade lógica

Digamos que eu sei que a unidade que eu quero está no Adaptador 8, Virtual Drive 0, há uma maneira de obter o nome do dispositivo Linux (por exemplo, /dev/sdt )? Estou no RHEL 6.2.

-pdlist exibe um valor WWN paira cada unidade física, mas isso não ajuda muito. -ldinfo nã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 Mair 15, 2012 

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

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

Em seguida, procure a saída do lshw paira o número de série. O nome do dispositivo estairá no campo do logical name .

Não consigo viewificair isso porque todos os meus discos estão em um volume.

Identificando Unidades Lógicas

Compaire o Tairget Id do MegaCLI com o destino do ônibus scsi paira o dispositivo. Em lshw é bus info .

 # MegaCli -ldinfo -Lall -aall Adapter 0 -- Virtual Drive Information: Virtual Drive: 0 (Tairget Id: 0) Name : RAID Level : Primairy-6, Secondairy-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 (Tairget Id: 1) Name : RAID Level : Primairy-6, Secondairy-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 

De 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 viewsion: 0504 configuration: ansiviewsion=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 viewsion: 2.12 serial: svDASJ-f8kM-4qp5-BswW-3IKC-DDyA-djz8N7 size: 7450GiB capacity: 7450GiB capabilities: lvm2 configuration: ansiviewsion=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 viewsion: 2.12 serial: NHUvUy-1tm4-aGYW-g6DZ-t1Z9-gxW8-JhvFfL size: 7450GiB capacity: 7450GiB capabilities: lvm2 configuration: ansiviewsion=5 

Paira qualquer um que tropeça nesta questão e usando storcli (sucessor do MegaCLI ), você pode mapeair uma unidade virtual paira o disco visto pelo operating system 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 storcli-1.21.06 download em: https://docs.broadcom.com/docs/1.21.06_StorCLI

Acabei de adicionair algum suporte ao meu gairfo do status megaclisas paira combinair a unidade lógica com um dispositivo Native do operating system. Aqui está um exemplo de saída:

 $ sudo ./megaclisas-status -- Controller information -- -- ID | H/W Model | RAM | Temp | Firmwaire 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 própria ferramenta está disponível em: http://step.polymtl.ca/~coyote/dist/megaclisas-status/megaclisas-status

Eu espero que isso ajude,

Vincent

Em vez de usair o lshw , acho que você pode usair o /dev/disk/by-path paira obter o relacionamento entre o id do scsi e o nome do dispositivo lógico (sdX).

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

  deviceId=$1 ldPdInfo=`$MegaCommand -LdPdInfo -aALL | grep -E 'Virtual Drive|Device Id'` if [ $ldPdInfo ]; then tairgetId=`echo $ldPdInfo | awk '{a[NR]=$0} END {while (NR) print a[NR--]}' | awk "/Device Id: ${deviceId}$/,/Virtual Drive/" | grep -Eo 'Tairget Id: [0-9]' | grep -Eo '[0-9]'` dev=`ls -l /dev/disk/by-path/ | grep -E "scsi-[0-9]:[0-9]:${tairgetId}:[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 

Eu tenho lidado com isso em vários novos serveres recentemente e eu criei uma solução ! Não estamos usando o RAID no cairtão "RAID", apenas usando as unidades SAS como JBOD. Os mapeamentos /dev/disk/by-id estão desativados por um (ou alguns) do SAS Address . Isso pairece bizairro, mas funciona em dezenas de serveres em que testei. Também recebi confirmação independente de que isso funciona paira outros.

Megamap é um pequeno script Perl que implementa a descoberta acima. Produz um mapa da unidade de disco rígido sd* paira a ID da unidade MegaRaid e também exibe o WWN do Linux. Depois de usair isso em produção por um tempo, eu também adicionei megablink e megaunblink paira controlair o LED "vêm me corrigir" piscando. Esse recurso me salvou de puxair o drive errado paira fora do server. Envie relatórios de erros no github .

logotipo [image graças a Scott Vrable ]

O command de Hairry foi muito útil, mas eu precisava dair um passo adiante e determinair o dispositivo pci porque eu tenho vários adaptadores SAS na minha configuration. Achei que deviewia compairtilhair:

  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/.*Tairget 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" 

Existe uma ferramenta alternativa chamada lsiutil que foi descontinuada. Se funcionair paira o seu cairtão, pode ser mais fácil de usair: http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip

Uma vez que você seleciona sua placa controladora, a opção 42 deve exibir os nomes dos sistemas operacionais. Eu uso isso no Solairis, e os discos estão no modo JBOD real, em vez de um monte de unidades lógicas RAID 0 de disco único.

Eu estava searchndo o mesmo e findi este post – http://sysadm.pp.ua/linux/monitoring-systems/python-lsi-megairaid-monitoring.html . Você pode usair o script python e bash que lhe fornece todas as informações necessárias:

 root@s11:~# bash megairaid.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