首先有必要先介绍一下有关RAID卡的使用,有关Cache问题也有个人理解:生产系统上的物理机磁盘配置大多都是RAID5,之前会经常性的遇到磁盘IO在某个时间极度的跟不上节奏,稍微写入量,磁盘utils就能够飙到80%多;最后发现是RAID卡的模式改变导致的性能影响;一般RAID卡的电池都会进行充放电的操作来进行电池的保护,一般时间在90天进行一次充放电,放电时间不一(没有验证过这个,感觉有1-2小时)。RAID卡电池放电时有默认策略会关闭RAID模式“Write Back”使用“Write through”
Write Back:在系统与磁盘的数据交互中启用RAID的Cache,在写入数据开启时,其性能能够提高是一个数量级的(一般RAID卡都配备有512M、1G缓存)
Write Throug:不启用RAIDcache,直接有磁盘进行数据交互;但是在读取性能上较好;电池放电启用此功能 是为了防止在 write back下并且无RAID卡电池的情况中,系统断电导致数据丢失
最终,考虑IDC机房情况我们都开启了电池放电状态下也强制开启缓存的策略,以解决短时间性上在写入性能的过分差距
查看是否是目前模式,如下是Write Throug
强制开启方法
强制开启步骤
强制修改RAID卡由writethrough到writeback 方法
# /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL
Set Write Cache OK if bad BBU on Adapter 0, VD 0 (target id: 0) success
若是放电关闭缓存 强制设置电池放电依然开启缓存方法
# /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL
Set Write Policy to WriteBack on Adapter 0, VD 0 (target id: 0) success
查看是否成功
# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -L0 -a0
Adapter 0-VD 0(target id: 0): Cache Policy:WriteBack, ReadAheadNone, Direct, Write Cache OK if bad BBU
开启后
强制修改RAID卡为WB:
cd /opt/lsi/MegaCLI/
/opt/lsi/MegaCLI/MegaCli -LDSetProp CachedBadBBU -Lall -aALL
/opt/lsi/MegaCLI/MegaCli -LDSetProp WB -Lall -aALL
/opt/lsi/MegaCLI/MegaCli -LDGetProp -Cache -L0 -a0