MegaCli: Obtenga el nombre del dispositivo / dev / sd * para una unidad lógica

16

Digamos que sé que la unidad que quiero está en el Adaptador 8, Unidad virtual 0, ¿hay alguna forma de obtener el nombre del dispositivo Linux (por ejemplo /dev/sdt)? Estoy en RHEL 6.2.

-pdlistmuestra un valor WWN para cada unidad física, pero eso no ayuda mucho. -ldinfono imprime un WWN ni ningún otro valor de identificación.

# ./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
fuente

Respuestas:

10

Debería poder comparar el número de serie del disco -pdlistcon la salida de lshw.

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

Luego busque la salida de lshwpara el número de serie. El nombre del dispositivo estará en el logical namecampo.

No puedo verificar esto porque todos mis discos están en un volumen.

Identificación de unidades lógicas

Compare el Target Idde MegaCLI con el objetivo del bus scsi para el dispositivo. En lshweso está 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

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
               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
fuente
1
Acabo de probar esto, pero tengo unidades de IBM y para mí parece que no hay correlación entre el número de serie que aparece -pdlisty el número de serie que aparece lshw. Gracias por el consejo.
twblamer
Es posible que su tarjeta controladora no exponga el número de serie real y genere un número de serie de volumen para cada disco.
Jeff Strunk
Debo agregar que esta es una configuración JBOD con cada unidad configurada en una matriz RAID0 de una unidad. Por lo tanto, esperaría que el número de serie de la unidad física esté oculto, pero me pregunto si puedo obtener alguna información de la configuración de la unidad lógica.
twblamer
1
Parece que JBOD está deshabilitado en el adaptador de forma predeterminada, pero puedo habilitarlo:./MegaCli64 -AdpSetProp -EnableJBOD 1 -a0
twblamer
1
Para mostrar solo discos, use: lshw -class disk
Dan Mazzini
7

Acabo de agregar algo de soporte a mi bifurcación de megaclisas-status para hacer coincidir la unidad lógica con un dispositivo nativo del sistema operativo. Aquí hay un ejemplo de salida:

$ 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 --

La herramienta en sí está disponible en: http://step.polymtl.ca/~coyote/dist/megaclisas-status/megaclisas-status

Espero que esto ayude,

Vincent

Vincent S. Cojot
fuente
Esto funciona muy bien, incluso en Centos 6, ¡gracias!
SvennD
2
Tenga en cuenta que la herramienta fue aceptada y fusionada en sentido ascendente, por lo que se encuentra una versión más reciente en: raw.githubusercontent.com/eLvErDe/hwraid/master/wrapper-scripts/…
Vincent S. Cojot
Wow, esto me ahorra un dolor de cabeza. Funciona muy bien Gracias
biocyberman
Intenté eso pero solo obtuve números en la columna de ruta del sistema
operativo
Informe cualquier problema en: github.com/eLvErDe/hwraid/issues
Vincent S. Cojot
6

Para cualquiera que se encuentre con esta pregunta y use storcli(sucesor de MegaCLI), puede asignar una unidad virtual al disco que ve el sistema operativo con lo siguiente:

$ /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

Probado con storcli-1.21.06descarga en: https://docs.broadcom.com/docs/1.21.06_StorCLI

Dorian Gambin
fuente
5

En lugar de usar lshw, creo que puede usar /dev/disk/by-pathpara obtener la relación entre la identificación de destino scsi y el nombre del 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
fuente
Corto y dulce.
Michael R. Hines
3

¡He estado lidiando con esto en varios servidores nuevos recientemente y he encontrado una solución ! No estamos usando RAID en la tarjeta "RAID", solo estamos usando las unidades SAS como JBOD. Las /dev/disk/by-idasignaciones están desactivadas por uno (o unos pocos) de SAS Address. Esto parece extraño, pero funciona en docenas de servidores en los que lo he probado. También he recibido confirmación independiente de que esto funciona para otros.

megamap es un script corto de Perl que implementa el descubrimiento anterior. Produce un mapa de la unidad de Linux sd*con la identificación de la unidad MegaRaid y también muestra el WWN de Linux. Después de usar esto en producción durante un tiempo también agregué megablinky megaunblinkpara controlar el LED parpadeante "ven a arreglarme". Esa característica me ha salvado de sacar el disco incorrecto del servidor. Envíe informes de errores en github .

logo[imagen gracias a Scott Vrable ]

polluelos
fuente
He agregado una utilidad llamada megablinkal mismo repositorio de github que parpadeará en el disco defectuoso para que el técnico de campo lo encuentre fácilmente.
chicas
Basado en un informe de error y correcciones posteriores, he lanzado una nueva versión de megamapen github.
pollitos
2

El comando de Harry fue muy útil, pero necesitaba ir un paso más allá y determinar el dispositivo pci porque tengo múltiples adaptadores SAS en mi configuración. Pensé que debería compartir:

  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
fuente
1

Hay una herramienta alternativa llamada lsiutilque ha sido descontinuada. Si funciona para su tarjeta, puede ser más fácil de usar: http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip

Una vez que seleccione su tarjeta controladora, se supone que la opción 42 muestra los nombres del sistema operativo. Lo uso en Solaris, y los discos están en modo JBOD real en lugar de un montón de unidades lógicas RAID 0 de un solo disco.

Jeff Strunk
fuente
Descargué ese zip y desafortunadamente no parece que funcione para mi tarjeta + SO. Parece que podría estar atrapado.
twblamer
1

Estaba investigando lo mismo y encontré esta publicación: http://sysadm.pp.ua/linux/monitoring-systems/python-lsi-megaraid-monitoring.html . Puede usar python y bash script que le brindan toda la información necesaria:

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
fuente