MegaCli: obtenir le nom de périphérique / dev / sd * pour un lecteur logique

16

Disons que je sais que le lecteur que je veux se trouve sur l'adaptateur 8, Virtual Drive 0, est-il possible d'obtenir le nom du périphérique Linux (par exemple /dev/sdt)? Je suis sur RHEL 6.2.

-pdlistaffiche une valeur WWN pour chaque disque physique, mais cela n'aide pas beaucoup. -ldinfon'imprime pas un WWN ou toute autre valeur d'identification.

# ./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
la source

Réponses:

10

Vous devriez pouvoir comparer le numéro de série du disque de -pdlistavec la sortie de lshw.

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

Recherchez ensuite la sortie de lshwpour le numéro de série. Le nom de l'appareil sera dans le logical namechamp.

Je ne peux pas vérifier cela car tous mes disques sont dans un volume.

Identification des lecteurs logiques

Comparez le Target IdMegaCLI avec la cible du bus scsi pour l'appareil. C'est lshwdedans 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
la source
1
Je viens d'essayer cela, mais j'ai des lecteurs IBM et pour moi, il semble qu'il n'y ait aucune corrélation entre le numéro de série qui apparaît -pdlistet le numéro de série qui s'affiche lshw. Merci pour l'astuce cependant.
twblamer
Il se peut que votre carte contrôleur n'expose pas le vrai numéro de série et crée un numéro de série de volume pour chaque disque.
Jeff Strunk
Je dois ajouter qu'il s'agit d'une configuration JBOD avec chaque disque configuré dans une matrice RAID0 d'un disque. Je m'attends donc à ce que le numéro de série du lecteur physique soit masqué, mais je me demande si je peux obtenir des informations de la configuration du lecteur logique.
twblamer
1
On dirait que JBOD est désactivé sur l'adaptateur par défaut, mais je peux l'activer:./MegaCli64 -AdpSetProp -EnableJBOD 1 -a0
twblamer
1
Pour afficher uniquement les disques, utilisez: lshw -class disk
Dan Mazzini
7

Je viens d'ajouter un support à ma fourchette de megaclisas-status pour faire correspondre le lecteur logique à un périphérique natif du système d'exploitation. Voici un exemple de sortie:

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

L'outil lui-même est disponible à: http://step.polymtl.ca/~coyote/dist/megaclisas-status/megaclisas-status

J'espère que ça aide,

Vincent

Vincent S. Cojot
la source
Cela fonctionne très bien, même chez Centos 6, merci!
2016
2
Veuillez noter que l'outil a été accepté et fusionné en amont, donc une version plus récente est disponible sur: raw.githubusercontent.com/eLvErDe/hwraid/master/wrapper-scripts/…
Vincent S. Cojot
Wow, cela me sauve un mal de tête. Fonctionne magnifiquement. Merci
biocyberman
J'ai essayé, mais je
n'ai
Veuillez signaler tout problème à: github.com/eLvErDe/hwraid/issues
Vincent S. Cojot
6

Pour toute personne tombant sur cette question et utilisant storcli(successeur de MegaCLI), vous pouvez mapper un lecteur virtuel sur le disque vu par le système d'exploitation avec les éléments suivants:

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

Testé avec storcli-1.21.06 téléchargement sur: https://docs.broadcom.com/docs/1.21.06_StorCLI

Dorian Gambin
la source
5

Au lieu d'utiliser lshw, je pense que vous pouvez simplement utiliser /dev/disk/by-pathpour obtenir la relation entre l'ID cible scsi et le nom du périphérique logique (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
la source
Court et doux.
Michael R. Hines
3

J'ai été confronté à cela sur un certain nombre de nouveaux serveurs récemment et j'ai trouvé une solution ! Nous n'utilisons pas de RAID sur la carte "RAID", nous utilisons simplement les disques SAS comme JBOD. Les /dev/disk/by-idmappages sont désactivés par un (ou quelques-uns) du SAS Address. Cela semble bizarre, mais cela fonctionne sur des dizaines de serveurs sur lesquels je l'ai testé. J'ai également reçu une confirmation indépendante que cela fonctionne pour les autres.

megamap est un court script Perl qui implémente la découverte ci-dessus. Il produit une carte du lecteur Linux sd*vers l'ID du lecteur MegaRaid et affiche également le WWN de Linux. Après l'avoir utilisé en production pendant un certain temps, j'ai également ajouté megablinket megaunblinkcontrôlé la LED clignotante "come fix me". Cette fonctionnalité m'a évité de retirer le mauvais lecteur du serveur. Veuillez soumettre des rapports de bogues sur github .

logo[image grâce à Scott Vrable ]

poussins
la source
J'ai ajouté un utilitaire appelé megablinkau même dépôt github qui clignotera le mauvais disque pour que le technicien de terrain le trouve facilement.
poussins
Sur la base d'un rapport de bogue et de correctifs ultérieurs, j'ai publié une nouvelle version de megamapon github.
poussins
2

La commande de Harry était très utile, mais je devais aller plus loin et déterminer le périphérique pci car j'avais plusieurs adaptateurs SAS dans ma configuration. J'ai pensé que je devrais partager:

  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
la source
1

Il existe un autre outil appelé lsiutilqui a été abandonné. Si cela fonctionne pour votre carte, il peut être plus facile à utiliser: http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip

Une fois que vous avez sélectionné votre carte contrôleur, l'option 42 est censée afficher les noms de système d'exploitation. J'utilise ceci sur Solaris, et les disques sont en mode JBOD réel au lieu d'un tas de disques logiques RAID 0 à disque unique.

Jeff Strunk
la source
J'ai téléchargé ce zip et il ne semble pas que cela fonctionne pour ma carte + OS, malheureusement. On dirait que je pourrais être coincé.
twblamer
1

Je cherchais pour la même chose et j'ai trouvé cet article - http://sysadm.pp.ua/linux/monitoring-systems/python-lsi-megaraid-monitoring.html . Vous pouvez utiliser le script python et bash qui vous donne toutes les informations nécessaires:

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
la source