Linux中如何快速定位磁盘分区和插槽

当收到一条磁盘告警时,我们应该怎么快速定位磁盘插槽和分区?这时可以使用MegaCli工具,具体使用方式参考《“五分钟学命令系列”之三十四《MegaCli命令》》。

 

0x01 背景

机器上有两块硬盘,当设备ID为16的磁盘状态为faild时

 

0x02  查询故障盘对应的插槽

通过MegaCli命令查询出磁盘的Enclosure Device ID,Raw Size,Slot Number,Device Id,Firmware state,DiskGroup

$ /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -aALL |egrep 'Enclosure Device ID|Raw Size|Slot Number|Device Id|Firmware state|DiskGroup' | awk 'BEGIN{FS="\n";ORS=" ; "} {if($0~"Enclosure Device ID"&&NR>1){print "\n"$0} else {print $0}}' |awk '{print}' | sed -r 's/\[.*\]//;s/\s+/ /g' | sed -r 's/ Span: 0,/ /g'

Enclosure Device ID: 252 ; Slot Number: 0 ; Drive's position: DiskGroup: 0, Arm: 0 ; Device Id: 17; Raw Size: 447.130 GB ; Firmware state: Online, Spun Up ;

Enclosure Device ID: 252 ; Slot Number: 1 ; Drive's position: DiskGroup: 1, Arm: 0 ; Device Id: 16 ; Raw Size: 931.512 GB ; Firmware state: Faild ;

通过上述命令可以得出设备ID为16的故障磁盘位于插槽1(Slot Number: 1)

 

0x03  查询故障盘对应的分区

通过udevadm查询出分区的真实路径

$ udevadm info -q path -n /dev/sda

/devices/pci0000:00/0000:00:02.0/0000:03:00.0/host0/target0:2:0/0:2:0:0/block/sda

$ udevadm info -q path -n /dev/sdb

/devices/pci0000:00/0000:00:02.0/0000:03:00.0/host0/target0:2:1/0:2:1:0/block/sdb

通过上述命令可以得到两个数据,0:2:0:0和0:2:1:0。这两个数据的第三位和第二步得到的Drive's position: DiskGroup做匹配得到,DiskGroup: 0对应0:2:0:0,DiskGroup: 1对应0:2:1:0

最后,我们得出结果Device ID为16的故障盘对应的插槽为1,对应的分区为sdb

PS:转发一个脚本,直接复制到机器运行,可以得到硬盘的所有信息,以表格的方式打印出来,简单明了。《megaclisas-status

weinxin
聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

  1. avatar 网站建设 4

    不错,默默收藏起来

  2. avatar haoessays.wordpress.com 1

    期待楼主的更新