Disons que je connais le lecteur que je veux est sur l'adaptateur 8, lecteur virtuel 0, est-il un moyen d'obtenir le nom du périphérique Linux (par exemple /dev/sdt
)? Je suis sur Rhel 6.2.
-pdlist
Affiche une valeur WWN pour chaque lecteur physique, mais cela n'aide pas beaucoup. -ldinfo
N'imprimez pas un WWN ou une 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
Vous devriez être capable de comparer le numéro de série de disques de -pdlist
Avec la sortie de lshw
.
# MegaCLI -pdlist -a0 | grep "Inquiry Data:"
Inquiry Data: XXXXXXXXXXXXHitachi YYYYYYYY ZZZZZZ
...
Ensuite, recherchez la sortie de lshw
pour le numéro de série. Le nom du périphérique sera dans le logical name
champ.
Je ne peux pas vérifier cela parce que tous mes disques sont en volume.
Comparez le Target Id
de Megacli avec la cible de bus SCSI pour l'appareil. Dans lshw
c'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
Je viens d'ajouter un soutien à ma fourchette de Megaclisas-Statut pour correspondre à la 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 à l'adresse suivante: http://step.polymtl.ca/~coyote/dist/megaclisas-status/megaclisas-status
J'espère que ça aide,
Vexent
Pour quiconque trébuchant sur cette question et en 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écharger à: https://docs.broadcom.com/docs/1.21.06_storcli
Au lieu d'utiliser lshw
, je pense que vous pouvez simplement utiliser /dev/disk/by-path
Pour obtenir la relation entre l'ID cible SCSI et le nom de 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
J'ai récemment affaire à cela dans un certain nombre de nouveaux serveurs et j'ai proposé une solution ! Nous n'utilisons pas RAID sur la carte "RAID", en utilisant simplement le SAS Lecteur comme JBOD. Le /dev/disk/by-id
Les mappages sont éteints par un (ou quelques-uns) de la SAS Address
. Cela semble bizarre, mais cela fonctionne à travers des dizaines de serveurs que je l'ai testé. J'ai également reçu 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*
à Megaraid Drive ID et affiche également le WWN de Linux. Après avoir utilisé cela dans la production pendant un moment, j'ai également ajouté megablink
et megaunblink
pour contrôler le voyant "Venez me fixer" clignotant. Cette fonctionnalité m'a sauvé de tirer le mauvais lecteur hors du serveur. Veuillez soumettre des rapports de bogues sur GitHub .
[image Merci à Scott Vrible ]
Le commandement de Harry était très utile, mais j'avais besoin d'aller plus loin et de déterminer le périphérique PCI car j'ai plusieurs SAS dans ma configuration. Vous devriez 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"
Je recherchais pour la même chose et j'ai trouvé ce post - http://sysadm.pp.ua/linux/monitoringing-systems/python-lsi-megaraid-monitoring.html . Vous pouvez utiliser python et Bash Script qui vous donnent 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