Dell服务器RAID卡介绍及监控

本文包含如下内容


一、Dell服务器 RAID卡介绍

二、阵列卡的Stripe size介绍

三、megacli介绍、安装、使用、crontab监控脚本



一、Dell服务器 RAID卡介绍

以下在系统下使用相关命令得到的数据,dell支持的各种RAID卡的详细参数参见本文第五部分。

1、内部RAID控制器

使用megacli命令查看得到的RAID卡数据:


SAS 6/iR :只支持2块硬盘做 raid0,或者raid1,或者不做阵列卡  (Dell硬件聊天室获得)


PERC 6/i Integrated

Memory Size: 256MB

RAID Level Supported: RAID0, RAID1, RAID5, RAID6, RAID10, RAID50, RAID60, PRL 11, PRL 11 with spanning, SRL 3 supported

Supported Drives: SAS, SATA

Min Stripe Size: 8 KB

Max Stripe Size: 1.0 MB

接口速度Link Speed: 3.0Gb/s


PERC H700 Integrated

Memory Size: 512MB

RAID Level Supported: RAID0, RAID1, RAID5, RAID6, RAID10, RAID50, RAID60, PRL 11, PRL 11 with spanning

Supported Drives: SAS, SATA

Min Stripe Size: 8 KB

Max Stripe Size: 1.0 MB

接口速度Link Speed: 6.0Gb/s


官方资料:

PERC H2006 Gb/秒)

PERC H7006Gb /秒),配备512 MB非易失性高速缓存

PERC H7006 Gb/秒),配备512 MB电池后备高速缓存;512 MB1 G非易失性电池后备高速缓存

PERC 6/i,配备256 MB电池后备高速缓存


2、外部RAID控制器

官方资料:

PERC H8006Gb/秒),配备512 MB非易失性高速缓存

PERC H8006Gb/秒),配备512 MB电池后备高速缓存;512 MB1 G非易失性电池后备高速缓存

PERC 6/E,配备256 MB512 MB电池后备高速缓存



二、阵列卡的Stripe size介绍

Stripe size 默认64KB

1Stripe size百科介绍

在每个磁盘上连续写入数据的总量,也称作“条带深度”。你可以指定每个逻辑驱动器的条带容量从2KB4KB8KB一直到128KB。为了获得更高的性能,要选择条带的容量等于或小于操作系统的簇的大小。大容量的条带会产生更高的读取性能,尤其在读取连续数据的时候。而读取随机数据的时候,最好设定条带的容量小一点。如果指定128KB的条带将需要8MB内存。


不同Stripe size的选择直接影响性能,如IOPS和吞吐量。

Stripe size值小,通过多块磁盘响应多个I/O请求,可以增加I/O访问速率(IOPS

Stripe size值大,通过多块磁盘响应一个I/O请求,可以增加数据传输速率(Mbps

我们知道顺序和随机对于带宽和iops的需求成反比,即顺序的读写比较消耗带宽,随机的读写比较消耗iops


2Stripe size一般设置

通常,小Stripe size适用于数据库,一般Stripe size适用于文件服务器,大Stripe size适用于多煤体应用。实际应用stripe size大小应在效率测试后具体设置。


数据库一般4-16KB

web服务器默认即可,16-64KB

流媒体等大文件建议128KB以上



三、megacli介绍、安装、使用、crontab监控脚本

查看RAID信息的工具有mpt-statusmegarcdell OpenManage。经测试只有megacli可以实现目标,dell OpenManage由于较大90M左右没有安装。


megacli工具非常强大,不仅能查看RAID卡信息,而且还能设置RAID卡,但是不支持SAS 6/iRRAID卡,不推荐采用megacli在线设置RAID卡,本文也仅用于监控挂接在RAID上的硬盘状态。


1、查看raid卡的型号:

root@3:~# lspci |grep RAID  H700

02:00.0 RAID bus controller: LSI Logic / Symbios Logic Device 0079 (rev 04)

root@3:~# lspci  |grep RAID  PERC 6/i

03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)

root@k:~# lspci|grep SAS     SAS 6/iR

03:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1068E PCI-Express Fusion-MPT SAS (rev 08)


2、安装megacli

root@3:~# more /etc/apt/sources.list

增加如下源:

##add monitor dell perc 6/i raidcontroller's source

deb http://hwraid.le-vert.net/debian lenny main


root@3:~# apt-get update

root@3:~# apt-get install megacli


3、使用megacli查看RAID卡信息

术语:BBU 电池备份单元(Battery Backup Unit)

常用查看命令:

megacli -LDInfo -Lall -aALL   raid级别

megacli -AdpAllInfo -aALL     raid卡信息

megacli -PDList -aALL         查看硬盘信息

megacli -AdpBbuCmd -aAll      查看电池信息

megacli -FwTermLog -Dsply -aALL 查看raid卡日志

megacli -adpCount             显示适配器个数

megacli -AdpGetTime �CaALL    显示适配器时间

megacli -AdpAllInfo -aAll     显示所有适配器信息

megacli -LDInfo -LALL -aAll   显示所有逻辑磁盘组信息

megacli -PDList -aAll         显示所有的物理信息

megacli -AdpBbuCmd -GetBbuStatus -aALL |grep Charger Status’ 查看充电状态

megacli -AdpBbuCmd -GetBbuStatus -aALL 显示BBU状态信息

megacli -AdpBbuCmd -GetBbuCapacityInfo -aALL  显示BBU容量信息

megacli -AdpBbuCmd -GetBbuDesignInfo -aALL    显示BBU设计参数

megacli -AdpBbuCmd -GetBbuProperties -aALL    显示当前BBU属性

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


4、使用crontab定时监控硬盘状态的小脚本

该脚本实现在监控到硬盘故障时发出报警邮件,并关联到手机短信,以便通知运维人员及时处理。

root@3:~# more /backup/check_raid_disk_health

#!/bin/sh

log_dir=/backup/

log_name=_raid_disk_monitor

logtime=$(date +%Y%m%d --date='1 days ago')

fix=.log

host=_`hostname`


STATUS=0

echo  "Checking RAID status on $host" >$log_dir$logtime$log_name$host$fix



RAID_Contrller=`megacli -AdpAllInfo -aALL |grep "Product Name" | cut -d: -f2`

echo "Controller : $RAID_Contrller" >>$log_dir$logtime$log_name$host$fix


Online_disk_num=`megacli  -PDList -aALL | grep Online | wc -l`

echo "Totall number of Physical disks online : $Online_disk_num" >>$log_dir$logtime$log_name$host$fix


Degrade_disk=`megacli -AdpAllInfo -a0 |grep "Degrade"`

echo $Degrade_disk >>$log_dir$logtime$log_name$host$fix

Degrade_disk_num=`echo $Degrade_disk |cut -d" " -f3`


Failed_disk=`megacli -AdpAllInfo -a0 |grep "Failed Disks"`

echo $Failed_disk >>$log_dir$logtime$log_name$host$fix

Failed_disk_num=`echo $Failed_disk |cut -d" " -f4`


[ "$Degrade_disk_num" -ne 0 ] && STATUS=1

[ "$Failed_disk_num" -ne 0 ] && STATUS=1


exit $STATUS


或者


#!/bin/bash
Battery=`/usr/sbin/MegaCli -AdpBbuCmd -GetBbuStatus -aALL|grep "Charger Status"|awk -F: '{print $1" :"$2}'`
raid=`/usr/sbin/MegaCli -cfgdsply -aALL|grep "RAID Level"|tail -1|awk -F: '{print $1" :"$2}'`
Disknum=`/usr/sbin/MegaCli -cfgdsply -aALL|grep -c "Non Coerced Size"`
Onlinedisk=`/usr/sbin/MegaCli -cfgdsply -aALL | grep "Online" | wc -l | sed 's/ //'`
Faileddisk=`/usr/sbin/MegaCli -AdpAllInfo -aALL | grep "Failed Disks"|awk -F' ' '{print $4}'`

case "$raid"
in
"RAID Level           : Primary-1, Secondary-0, RAID Level Qualifier-0") echo "Raid Level :Raid 1";;
"RAID Level           : Primary-0, Secondary-0, RAID Level Qualifier-0") echo "Raid Level :Raid 0";;
"RAID Level           : Primary-5, Secondary-0, RAID Level Qualifier-3") echo "Raid Level :Raid 5";;
"RAID Level           : Primary-1, Secondary-3, RAID Level Qualifier-0") echo "Raid Level :Raid 10";;
esac

if [ -z "$Battery" ];then
echo "Battery :Null"
else
echo "$Battery"
fi

echo "Total Diak Number:$Disknum"
echo "Online Disk Number:$Onlinedisk"
echo "Failed Disk Number:$Faileddisk"
echo ""

你可能感兴趣的:(megacli)