MegaCli: รับชื่ออุปกรณ์ / dev / sd * สำหรับโลจิคัลไดรฟ์


16

สมมติว่าฉันรู้ว่าไดรฟ์ที่ฉันต้องการอยู่ในอะแดปเตอร์ 8, Virtual Drive 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

คำตอบ:


10

คุณควรจะสามารถที่จะเปรียบเทียบจำนวนดิสก์แบบอนุกรมจากกับการส่งออกจาก-pdlistlshw

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

จากนั้นค้นหาผลลัพธ์ของlshwหมายเลขซีเรียล ชื่ออุปกรณ์จะอยู่ในlogical nameช่อง

ฉันไม่สามารถตรวจสอบสิ่งนี้ได้เพราะดิสก์ทั้งหมดของฉันอยู่ในโวลุ่ม

การระบุไดรฟ์แบบลอจิคัล

เปรียบเทียบTarget Idจาก MegaCLI กับเป้าหมายบัส scsi สำหรับอุปกรณ์ ในมันเป็นlshwbus 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

1
ฉันแค่พยายามนี้ แต่ฉันมีไดรฟ์ IBM และสำหรับฉันมันดูเหมือนว่ามีความสัมพันธ์ระหว่างหมายเลขไม่มีที่แสดงในและหมายเลขที่แสดงให้เห็นถึง-pdlist lshwขอบคุณสำหรับเคล็ดลับแม้ว่า
twblamer

อาจเป็นได้ว่าการ์ดคอนโทรลเลอร์ของคุณไม่ได้เปิดเผยหมายเลขซีเรียลจริงและสร้างหมายเลขซีเรียลเสียงสำหรับแต่ละดิสก์
Jeff Strunk

ฉันควรเพิ่มนี่คือการตั้งค่า JBOD กับไดรฟ์แต่ละตัวที่กำหนดค่าไว้ในอาร์เรย์ RAID0 ของหนึ่งไดรฟ์ ดังนั้นฉันจึงคาดหวังว่าหมายเลขซีเรียลของไดรฟ์ฟิสิคัลจะถูกซ่อนอยู่ แต่ฉันสงสัยว่าฉันจะได้รับข้อมูลบางอย่างจากการกำหนดค่าไดรฟ์แบบลอจิคัลหรือไม่
twblamer

1
ดูเหมือนว่า JBOD ถูกปิดใช้งานบนอะแดปเตอร์โดยค่าเริ่มต้น แต่ฉันสามารถเปิดใช้งานได้:./MegaCli64 -AdpSetProp -EnableJBOD 1 -a0
twblamer

1
หากต้องการแสดงเฉพาะดิสก์ให้ใช้: lshw -class disk
Dan Mazzini

7

ฉันเพิ่งเพิ่มการสนับสนุนบางอย่างให้กับสถานะ megaclisas ของฉันสำหรับจับคู่ไดรฟ์แบบลอจิคัลกับอุปกรณ์ OS Native นี่คือตัวอย่างผลลัพธ์:

$ 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

ฉันหวังว่านี่จะช่วยได้,

วินเซนต์


ใช้งานได้ดีแม้ใน Centos 6 ขอบคุณ!
SvennD

2
โปรดทราบว่าเครื่องมือที่ได้รับการยอมรับและรวมต้นน้ำเพื่อให้รุ่นล่าสุดขึ้นอยู่ที่: raw.githubusercontent.com/eLvErDe/hwraid/master/wrapper-scripts/...
วินเซนต์เอส Cojot

ว้าวนี่ช่วยฉันปวดหัว ทำงานได้อย่างสวยงาม ขอบคุณ
biocyberman

พยายาม แต่มีตัวเลขในคอลัมน์เส้นทางของระบบปฏิบัติการเท่านั้น
hek2mgl

โปรดรายงานปัญหาใด ๆ ที่: github.com/eLvErDe/hwraid/issues
Vincent S. Cojot

6

สำหรับทุกคนที่สะดุดกับคำถามนี้และการใช้storcli(ทำต่อจากMegaCLI) คุณสามารถแมปไดรฟ์เสมือนกับดิสก์ที่ระบบปฏิบัติการเห็นดังต่อไปนี้:

$ /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.06ดาวน์โหลดได้ที่: https://docs.broadcom.com/docs/1.21.06_StorCLI


5

แทนที่จะใช้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

สั้นและหวาน
Michael R. Hines

3

เมื่อไม่นานมานี้ฉันได้จัดการกับเซิร์ฟเวอร์ใหม่จำนวนหนึ่งและฉันคิดหาวิธีแก้ปัญหา ! เราไม่ได้ใช้ RAID ในการ์ด "RAID" เพียงแค่ใช้ไดรฟ์ SAS เป็น JBOD /dev/disk/by-idแมปถูกปิดโดยหนึ่ง (หรือไม่กี่) SAS Addressจาก ดูเหมือนว่าจะแปลก แต่ก็ใช้ได้กับเซิร์ฟเวอร์หลายสิบตัวที่ฉันได้ทำการทดสอบ ฉันยังได้รับการยืนยันโดยอิสระว่าสิ่งนี้ใช้ได้กับผู้อื่น

megamapเป็นสคริปต์ Perl สั้น ๆ ที่นำการค้นพบไปใช้ มันสร้างแผนที่ของไดรฟ์ลินุกซ์sd*เพื่อ ID ไดรฟ์ MegaRaid และยังแสดง WWN จาก Linux หลังจากใช้สิ่งนี้ในการผลิตสักพักฉันก็เพิ่มmegablinkและmegaunblinkควบคุม LED "มาแก้ไขฉัน" กระพริบ LED คุณสมบัติดังกล่าวช่วยให้ฉันไม่สามารถดึงไดรฟ์ที่ไม่ถูกต้องออกจากเซิร์ฟเวอร์ กรุณาส่งรายงานข้อผิดพลาดบนGitHub

เครื่องหมาย[ภาพขอบคุณScott Vrable ]


ฉันได้เพิ่มยูทิลิตี้ที่เรียกว่าmegablinkrepo GitHub เดียวกันที่จะกระพริบไดรฟ์ที่ไม่ดีสำหรับช่างภาคสนามเพื่อหามันได้อย่างง่ายดาย
ลูกไก่

จากรายงานข้อผิดพลาดและการแก้ไขที่ตามมาฉันได้เปิดตัวเวอร์ชันใหม่ของmegamapon github
ลูกไก่

2

คำสั่งของ Harry มีประโยชน์มาก แต่ฉันต้องไปอีกขั้นหนึ่งและกำหนดอุปกรณ์ pci เพราะฉันมีอะแดปเตอร์ 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"

1

มีเครื่องมือสำรองที่เรียกlsiutilว่าหยุดการทำงานแล้ว หากใช้งานได้กับการ์ดของคุณอาจใช้งานง่ายกว่า: http://www.lsi.com/downloads/Public/Obsolete/Obsolete%20Common%20Files/LSIUtil_1.62.zip

เมื่อคุณเลือกการ์ดคอนโทรลเลอร์แล้วตัวเลือก 42 ควรจะแสดงชื่อระบบปฏิบัติการ ฉันใช้สิ่งนี้กับ Solaris และดิสก์อยู่ในโหมด JBOD จริงแทนที่จะเป็นดิสก์ไดรฟ์ RAID 0 แบบลอจิคัลเดียว


ฉันดาวน์โหลด zip แล้วและดูเหมือนว่าจะไม่ได้ผลกับ card + OS ของฉัน แต่น่าเสียดายที่ ดูเหมือนว่าฉันอาจจะติดอยู่
twblamer

1

ผมได้รับการค้นคว้าเพื่อสิ่งเดียวกันและพบว่าโพสต์นี้ - http://sysadm.pp.ua/linux/monitoring-systems/python-lsi-megaraid-monitoring.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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.