MegaCli : 논리 드라이브의 / dev / sd * 장치 이름을 얻습니다.


16

내가 원하는 드라이브가 어댑터 8, 가상 드라이브 0에 있다는 것을 알고 있다고 가정 해 봅시다. Linux 장치 이름을 얻는 방법이 /dev/sdt있습니까? RHEL 6.2에 있습니다.

-pdlist각 물리적 드라이브에 대한 WWN 값을 표시하지만별로 도움이되지 않습니다. -ldinfoWWN 또는 다른 식별 값을 인쇄하지 않습니다.

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

의 디스크 일련 번호 -pdlist와의 출력 을 비교할 수 있어야합니다 lshw.

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

그런 다음 lshw일련 번호 의 출력을 검색하십시오 . 장치 이름이 logical name필드에 나타납니다.

모든 디스크가 볼륨에 있으므로이를 확인할 수 없습니다.

논리 드라이브 식별

Target IdMegaCLI와 디바이스의 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

1
난 그냥 이것을 시도,하지만 난 IBM 드라이브가와 쇼까지의 해당 일련 번호 사이에 상관 관계가 없다처럼 나를 위해 보이는 -pdlist및 일련 번호를 보여줍니다 업 lshw. 그래도 팁 주셔서 감사합니다.
twblamer

컨트롤러 카드가 실제 일련 번호를 노출하지 않고 각 디스크의 볼륨 일련 번호를 만드는 것일 수 있습니다.
Jeff Strunk

각 드라이브가 하나의 드라이브의 RAID0 배열로 구성된 JBOD 설정입니다. 따라서 실제 드라이브의 일련 번호가 숨겨 질 것으로 예상되지만 논리 드라이브 구성에서 정보를 얻을 수 있는지 궁금합니다.
twblamer

1
기본적으로 어댑터에서 JBOD가 비활성화되어있는 것처럼 보이지만 활성화 할 수 있습니다../MegaCli64 -AdpSetProp -EnableJBOD 1 -a0
twblamer

1
디스크 만 표시하려면 다음을 사용하십시오. lshw -class disk
Dan Mazzini

7

방금 논리 드라이브를 OS 기본 장치와 일치시키기 위해 megaclisas-status 포크에 약간의 지원을 추가했습니다. 다음은 예제 출력입니다.

$ 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/…
Vincent S. Cojot

와우, 이것은 두통을 구해줍니다. 아름답게 작동합니다. 감사합니다
biocyberman

그것을 시도했지만 os 경로 열에 숫자를 얻었다
hek2mgl

어떤 문제에 신고 해주세요 : github.com/eLvErDe/hwraid/issues을
빈센트 S. Cojot

6

이 질문에 걸려 넘어지고 storcli(successor of 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

https://docs.broadcom.com/docs/1.21.06_StorCLIstorcli-1.21.06 에서 다운로드하여 테스트 했습니다.


5

를 사용하는 대신 scsi 대상 ID와 논리적 장치 이름 (sdX) 간의 관계를 얻는 데 lshw사용할 수 있다고 생각합니다 /dev/disk/by-path.

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 스크립트입니다. Linux 드라이브의 맵 sd*을 MegaRaid 드라이브 ID로 생성하고 Linux 의 WWN도 표시합니다. 나는 또한 추가하는 동안 생산이 사용 후 megablinkmegaunblinkLED 점멸 "나에게 와서 수정"을 제어. 이 기능으로 인해 서버에서 잘못된 드라이브를 꺼내지 않아도됩니다. github에 버그 보고서를 제출하십시오 .

심벌 마크[ Scott Vrable 덕분에 이미지 ]


현장 기술자가 쉽게 찾을 수 있도록 나쁜 드라이브를 megablink깜박이는 동일한 github repo에 호출 된 유틸리티를 추가 했습니다.
병아리

버그 보고서 및 후속 수정 사항을 기반으로 megamapgithub 의 새 버전을 출시했습니다 .
병아리

2

Harry의 명령은 매우 도움이되었지만 구성에 여러 개의 SAS 어댑터가 있으므로 한 단계 더 나아가 pci 장치를 결정해야했습니다. 내가 공유해야한다고 생각했다.

  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에 OS 이름이 표시됩니다. 나는 이것을 Solaris에서 사용하며 디스크는 단일 디스크 RAID 0 논리 드라이브 대신 실제 JBOD 모드에 있습니다.


그 우편 번호를 다운로드했는데 불행히도 내 카드 + OS에서 작동하는 것처럼 보이지 않습니다. 내가 붙어있을 것 같습니다.
twblamer

1

나는 똑같은 것을 연구 하고이 게시물을 발견했습니다-http: //sysadm.pp.ua/linux/monitoring-systems/python-lsi-megaraid-monitoring.html . 파이썬과 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.