创新路
我们一直在努力

[Learn.Practice.Discovery]Vol.3 检测常用服务器系统下Raid硬盘健康状态

序(ji)言(tang)部分

blob.png

这个世界上每个人都很忙,我也不能例外…

忙碌从来都不是中途放弃或者不能坚持的借口,试着让自己慢下来。深吸一口气,动动脖子,伸伸懒腰。新的一年,让我们从“零”开始。

进入正题

下面带来一个最近抽空研究的关于我们常用的服务器系统,RAID健康状态检测方法:

Windows:

http://www.hdsentinel.com/ 硬盘哨兵

blob.png

因为此货没啥技术含量大家就自己down下来狂点NEXT后自己玩吧。

Dell 的OMSA 因为限制仅只有使用dell服务器才能使用。如果有兴趣可以去官方社区看看。

里面也介绍的很详细,而且功能还不仅仅只是看看RAID健康那么Low~

blob.png

Linux、ESXI

好吧,那我们就重点来聊聊Linux和ESXI。关于这2种服务器系统你们第一反应是什么方式来检测硬件阵列卡的RAID及硬盘的健康状态呢?

 – -b 那我也不卖关子了。估计有些小伙伴说ESXI里面本身就集成了。至于Linux嘛…你(bu)懂(zhi)的(dao)

blob.png

对,对于ESXI上面的确集成的有健康状态查看的。但是你确定你看到了有关【RAID】和【硬盘】了吗?

下面就来介绍我们今天的主角——【MegaCLI】

【MegaCLI】简介篇

MegaCli是一款管理维护硬件RAID软件,可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid 上各磁盘状态,等等。一般我们检测linux或者esxi除了傻傻的看某些高级服务器硬盘指示灯(有些服务器硬盘没托架的还没有),又或者使用某些高大上品牌服务器厂商提供的"嵌入式SNMP"以外。想要方便或者出现硬盘问题让它主动找你“治病”的方法就是MegaCLi了。

blob.png

一般通过 MegaCli 的Media Error Count: 0 Other Error Count: 0 这两个数值来确定阵列中磁盘是否有问题;Medai Error Count 表示磁盘可能错误,可能是磁盘有坏道,这个值不为0值得注意,数值越大,危险系数越高,Other Error Count 表示磁盘可能存在松动,可能需要重新再插入。

【MegaCLI】安装篇

linux&ESXI安装包:

https://www.broadcom.com/support/download-search

linux 搜索 MegaCli 关键词

blob.png

ESXI 搜索VMware  MegaCli 关键词

blob.png

【linux 安装方法】

# 为了防止可能的依赖问题,使用yum安装(前期自行配置yum源和epel源)

sudo yum install MegaCli-8.07.14-1.noarch.rpm 

# 制作一个软连接方便调用

ln -s  /opt/MegaRAID/MegaCli/MegaCli64  /usr/bin/MegaCli64

【ESXI 安装方法】

blob.png

# 首先临时打开ESXI的SSH服务,使用Xshell或者winscp把下载的包传到ESXI的/tmp目录下

esxcli software vib install -v=/tmp/vmware-esx-MegaCli-8.x.x.vib –force –maintenance-mode –no-sig-check

PS:注意!一定不能再【维护模式】下进行

提示安装完毕后,进入目录cd /opt/lsi/MegaCLI/

./MegaCLI 就可以开始玩了

【MegaCLI】命令篇

相关命令及其解析: (linux自带的命令)

查看机器型号    # dmidecode | grep "Product" 

查看厂商    # dmidecode| grep  "Manufacturer" 

查看序列号    # dmidecode | grep  "Serial Number" 

查看CPU信息    # dmidecode | grep  "CPU" 

查看CPU个数    # dmidecode | grep  "Socket Designation: CPU" |wc –l 

查看出厂日期    # dmidecode | grep "Date" 

(安装MegaCLI后可以使用的参数)

查看充电状态    # MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Charger Status" 

显示BBU状态信息    # MegaCli -AdpBbuCmd -GetBbuStatus –aALL 

显示BBU容量信息    # MegaCli -AdpBbuCmd -GetBbuCapacityInfo –aALL 

显示BBU设计参数    # MegaCli -AdpBbuCmd -GetBbuDesignInfo –aALL 

显示当前BBU属性    # MegaCli -AdpBbuCmd -GetBbuProperties –aALL 

查看充电进度百分比    # MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Relative State of Charge" 

查询Raid阵列数    # MegaCli -cfgdsply -aALL |grep "Number of DISK GROUPS:" 

显示Raid卡型号,Raid设置,Disk相关信息      # MegaCli -cfgdsply –aALL 

显示所有物理信息    # MegaCli -PDList -aALL 

显示所有逻辑磁盘组信息    # MegaCli -LDInfo -LALL –aAll 

查看物理磁盘重建进度(重要)    # MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0 

查看适配器个数    #MegaCli –adpCount 

查看适配器时间    #MegaCli -AdpGetTime –aALL 

显示所有适配器信息    #MegaCli -AdpAllInfo –aAll 

查看Cache 策略设置    # MegaCli -cfgdsply -aALL |grep Polic

硬盘方面:

1、查看所有物理磁盘信息 

MegaCli -PDList -aALL

Adapter #0

Enclosure Number: 1 

Slot Number: 5 

Device Id: 5 

Sequence Number: 2 

Media Error Count: 0 

Other Error Count: 0 

Predictive Failure Count: 0 

Last Predictive Failure Event Seq Number: 0 

Raw Size: 140014MB [0x11177328 Sectors] 

Non Coerced Size: 139502MB [0x11077328 Sectors] 

Coerced Size: 139392MB [0x11040000 Sectors] 

Firmware state: Hotspare 

SAS Address(0): 0x5000c50008e5cca9 

SAS Address(1): 0x0 

Inquiry Data: SEAGATE ST3146855SS     S5273LN4Y1X0 

….. 

2、查看磁盘缓存策略 

MegaCli -LDGetProp -Cache -L0 -a0

Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct 

or 

MegaCli -LDGetProp -Cache -L1 -a0

Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct 

or 

MegaCli -LDGetProp -Cache -LALL -a0

Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct 

Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct 

or 

MegaCli -LDGetProp -Cache -LALL -aALL

Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct 

Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct 

or 

MegaCli -LDGetProp -DskCache -LALL -aALL

Adapter 0-VD 0: Disk Write Cache : Disk's Default 

Adapter 0-VD 1: Disk Write Cache : Disk's Default 

3、设置磁盘缓存策略 

缓存策略解释: 

WT    (Write through 

WB    (Write back) 

NORA  (No read ahead) 

RA    (Read ahead) 

ADRA  (Adaptive read ahead) 

Cached 

Direct 

例子: 

MegaCli -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0 

or 

MegaCli -LDSetProp -Cached|-Direct -L0 -a0 

or 

enable / disable disk cache 

MegaCli -LDSetProp -EnDskCache|-DisDskCache -L0 -a0 

4、创建/删除 阵列 

    4.1 创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5 

MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] –a0 

    4.2 创建阵列,不指定热备 

MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct –a0 

    4.3 删除阵列 

MegaCli -CfgLdDel -L1 –a0 

    4.4 在线添加磁盘 

MegaCli -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0 

意思是,重建逻辑磁盘组1,raid级别是5,添加物理磁盘号:1:4。重建完后,新添加的物理磁盘会自动处于重建(同步)状态,这个 时候 fdisk -l是看不到阵列的空间变大的,只有在系统重启后才能看见。 

5、查看阵列初始化信息 

    5.1 阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。 

MegaCli -LDInit -ShowProg -LALL -aALL 

或者以动态可视化文字界面显示 

MegaCli -LDInit -ProgDsply -LALL –aALL 

    5.2 查看阵列后台初始化进度 

MegaCli -LDBI -ShowProg -LALL -aALL 

或者以动态可视化文字界面显示 

MegaCli -LDBI -ProgDsply -LALL -aALL 

6、创建全局热备 

指定第 5 块盘作为全局热备 

MegaCli -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0 

也可以指定为某个阵列的专用热备 

MegaCli -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0 

7、删除全局热备 

MegaCli -PDHSP -Rmv -PhysDrv[1:5] -a0 

8、将某块物理盘下线/上线 

MegaCli -PDOffline -PhysDrv [1:4] -a0 

MegaCli -PDOnline -PhysDrv [1:4] -a0 

9、查看物理磁盘重建进度 

MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0

【MegaCLI】脚本篇

#!/bin/bash
# MegaCLI 自动检测脚本

# Log Path
logs='/tmp/MegaCLIinfo.log'

echo "##################Server Base Info###################" >>$logs
Nabfactyrer=`sudo dmidecode| grep  "Manufacturer"|head -1`
echo "$Nabfactyrer" >>$logs
echo 
ServDMI=`sudo dmidecode | grep -E "Product|Date|CPU"`
echo "$ServDMI" >>$logs
echo >>$logs

ServES=`sudo  MegaCli64 -cfgdsply -aALL |grep -E "Product Name:|Erro|Firmware state|RAID Level|Bad Blocks Exist:|Port status:|Physical Disk:|Raw Size:|Drive Temperature :|SPAN|Span Depth|PD Type:|Inquiry Data:|Device Speed:|Link Speed:"`

echo "$ServES" >>$logs

echo "##################Server Base Info###################" >>$logs


# State Check
SCheck=`sudo MegaCli64 -pdlist -aALL  | grep "Firmware state" | awk -F : '{print $2}' | awk -F , '{print $1}' >/tmp/fireware.log`
SCheck2=`sudo MegaCli64 -pdlist -aALL  | grep -E "Media Error|Other Error" | awk -F : '{print $2}' >/tmp/disk.log`
mailaddrs='hopelove20@163.com'

# Log Process
timer=`date +%Y%m%d`
/bin/mv $logs{,.$timer}
/bin/touch $logs


for i in `cat < /tmp/disk.log`
do
if [ $i -ne 0 ];then
    cat $logs | mailx -s "$HOSTNAME Disk Wraing!!" -a $logs{,.$timer} $mailaddrs
    break
fi
done

for  i in `cat < /tmp/fireware.log`
do 
if [ $i -ne "Online" ];then
    cat $logs | mailx -s "$HOSTNAME Fireware Wraing!!" -a $logs{,.$timer} $mailaddrs
    break
fi
done

be continued

【MegaCLI】相关参考资料

# MegaCli监控RAID磁盘健康信息

http://www.linuxidc.com/Linux/2016-07/133272.htm

#  How to install MegaCli on ESXi 5.x

http://de.community.dell.com/techcenter/support-services/w/wiki/909.how-to-install-megacli-on-esxi-5-x

#  DELL磁盘阵列控制卡(RAID卡)MegaCli常用管理命令汇总

http://zh.community.dell.com/techcenter/b/weblog/archive/2013/03/07/megacli-command-share

#  MegaCli 监控raid状态

http://blog.chinaunix.net/uid-25135004-id-3139293.html

未经允许不得转载:天府数据港官方信息博客 » [Learn.Practice.Discovery]Vol.3 检测常用服务器系统下Raid硬盘健康状态

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机