我们的生产服务器经常会做RAID存储,但是单单做了RAID就能保证性能高效和数据安全吗?答案是否定的,我们一般建议使用带电池保护的RAID卡,这样既能保证性能有能保证数据安全,但是也需要经常对电池进行维护;由于成本原因一般的RAID卡会使用锂电池,因为锂电池有较强的惰性,它在非充电状态下会缓慢地自放电(电池特性),一段时间后电量就会和刚充满电时不同,为了能够及时校准电量避免电池因为自放电而导致电量不明确,于是阵列卡控制器会对电池进行周期性地充放电操作(Relearn),以此保证电量的准确性,同时还可以判断电池是否故障或者老化。
查看RAID卡电池情况
MegaCli64 -AdpBbuCmd -GetBbuStatus -aAll
如果返回如下错误那么可能是RAID卡BUU电池有问题或者没有电池保护功能:
Adapter 0: Get BBU Status Failed.
FW error description:
The required hardware component is not present.
Exit Code: 0x22
查看当前RAID卡缓存策略
MegaCli64 -LDinfo -Lall -aAllDefault Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
第一部分:
WriteBack:写缓存策略
WriteThrough:直接写入磁盘,不适用RAID卡缓存。
第二部分:
ReadAheadNone:不开启预读
ReadAhead:开启预读,在读操作的时候,预先把后面顺序的数据载入raid卡缓存,在顺序读的环境中能提供很好的性能,但是在随机读的环境中反而降低读的性能(适合文件系统,不适合数据库系统)
ReadAdaptive:自适应预读,在缓存和I/O空闲时选择预读,默认策略。
第三部分:
Direct:读操作不缓存到RAID卡缓存。
Cached:读操作缓存到RAID卡缓存。
第四部分:如果BBU(电池)出现问题是否启用Write Cache
No Write Cache if Bad BBU:如果BBU出现问题不使用Write Cache,从WriteBack自动切换到WriteThrough,默认配置。
Write Cache OK if Bad BBU: 如果BBU出现问题仍启用Write Cache,这种配置是非常不安全的,除非是有UPS或者双电源的情况下。
RAID卡策略更改
修改WriteBack:
MegaCli64 -LDSetProp -WB -Lall -aAll修改WriteThrough:
MegaCli64 -LDSetProp -WT -Lall -aAll修改No Write Cache if Bad BBU:
MegaCli64 -LDSetProp -NoCachedBadBBU -Lall -aAll修改Write Cache OK if Bad BBU:
MegaCli64 -LDSetProp -CachedBadBBU -Lall -aAll4.其它相关命令
查看机器型号 # 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"
查看充电状态 # MegaCli64 -AdpBbuCmd-GetBbuStatus -aALL |grep "Charger Status"
显示BBU状态信息 # MegaCli64 -AdpBbuCmd-GetBbuStatus –aALL
显示BBU容量信息 # MegaCli64 -AdpBbuCmd-GetBbuCapacityInfo –aALL
显示BBU设计参数 # MegaCli64 -AdpBbuCmd-GetBbuDesignInfo –aALL
显示当前BBU属性 # MegaCli64 -AdpBbuCmd-GetBbuProperties –aALL
查看充电进度百分比 # MegaCli64 -AdpBbuCmd-GetBbuStatus -aALL |grep "Relative State of Charge"
查询Raid阵列数 # MegaCli64 -cfgdsply -aALL|grep "Number of DISK GROUPS:"
显示Raid卡型号,Raid设置,Disk相关信息 # MegaCli64-cfgdsply –aALL
显示所有物理信息 # MegaCli64 -PDList-aALL
显示所有逻辑磁盘组信息 # MegaCli64 -LDInfo -LALL–aAll
查看物理磁盘重建进度(重要) # MegaCli64 -PDRbld-ShowProg -PhysDrv [1:5] -a0
查看适配器个数 #MegaCli64 –adpCount
查看适配器时间 #MegaCli64 -AdpGetTime–aALL
显示所有适配器信息 #MegaCli64 -AdpAllInfo–aAll
查看Cache 策略设置 # MegaCli64 -cfgdsply -aALL|grep Polic
RAID卡电池充放电
磁盘阵列是服务器上历史悠久的一项技术,它能够通过不同的阵列模式合理利用空间和性能配比出性价比极高的磁盘阵列,被绝大部分的服务器OEM厂商所广泛采用。其中以LSI公司的MegaRAID SAS产品为主,广泛用于各品牌(除惠普外)的x86服务器。
为何有缓存?
阵列卡核心技术包含三部分内容:1、数据条带化;2、数据冗余;3、高速缓存。其中高速缓存就是所谓的阵列卡内存(以下简称缓存):阵列卡控制器通过一系列算法将上层应用请求过来的写请求进行优化并缓存在阵列卡内存里以此提高应用的写性能(上层应用不必等待数据实际Flush到磁盘上即可完成写操作)。由于缓存也属于RAM的一种,因此也存在掉电丢数据的风险。一旦服务器断电,阵列卡内存中的数据就会丢失,这会给应用造成数据完整性的风险。
电池的诞生