MegaCli:获取逻辑驱动器的/ dev / sd *设备名称

比方说,我知道我想要的驱动器是在适配器8,虚拟驱动器0,有没有办法获得Linux设备名称(例如/dev/sdt )? 我在RHEL 6.2上。

-pdlist显示每个物理驱动器的WWN值,但这没有多大帮助。 -ldinfo不打印WWN或任何其他识别值。

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

您应该能够将-pdlist的磁盘序列号与-pdlist的输出进行lshw

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

然后searchlshw的输出序列号。 设备名称将位于logical name字段中。

我无法validation这是因为我的所有磁盘都在一个卷中。

识别逻辑驱动器

将MegaCLI中的Target Id与设备的scsi总线目标进行比较。 在lshw它是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 

来自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 

对于任何人在这个问题上磕磕绊绊,并使用storclistorcli后继者),您可以将虚拟驱动器映射到操作系统看到的磁盘,具体如下:

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

storcli-1.21.06testing下载地址: https : storcli-1.21.06

我只是添加了一些支持megaclisas-status的分支,以便将逻辑驱动器与OS本机设备相匹配。 以下是一个输出示例:

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

该工具本身可在: http : //step.polymtl.ca/~coyote/dist/megaclisas-status/megaclisas-status

我希望这有帮助,

文森特

而不是使用lshw ,我想你可以使用/dev/disk/by-path来获取scsi目标标识和逻辑设备名称(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 

最近我在一些新的服务器上处理这个问题,并且提出了一个解决scheme ! 我们没有在“RAID”卡上使用RAID,只是使用SAS驱动器作为JBOD。 /dev/disk/by-id映射closures一个(或几个) SAS Address 。 这看起来很奇怪,但它可以在我testing过的几十台服务器上运行。 我也收到了独立的确认 ,这对他人有效。

megamap是一个简短的Perl脚本,实现上面的发现。 它生成一个Linux驱动器sd*到MegaRaid驱动器ID的映射,并显示来自Linux的WWN。 在使用这个在生产一段时间后,我还添加了megablinkmegaunblink来控制“来修正我”闪烁的LED。 这个function让我把错误的驱动器拉出服务器。 请在github上提交bug报告。

商标 [感谢Scott Vrable ]

Harry的命令非常有帮助,但我需要更进一步,确定pci设备,因为我的configuration中有多个SAS适配器。 我想应该分享一下:

  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" 

有一个名为lsiutil的替代工具已经停用。 如果它适用于您的卡片,则可能更易于使用: http : //www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip

一旦你select你的控制器卡,选项42应该显示操作系统名称。 我在Solaris上使用它,并且磁盘处于真正的JBOD模式,而不是一堆单磁盘RAID 0逻辑驱动器。

我正在研究同样的事情,发现这个职位 – http://sysadm.pp.ua/linux/monitoring-systems/python-lsi-megaraidmonitoring.html 。 你可以使用python和bash脚本给你所有需要的信息:

 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