bbu失效导致raid控制器强制关闭write back缓存,使写入速度暴跌30%~60%、await飙升;需依次验证bbu状态、缓存策略及i/o指标,再通过重置学习周期、临时启用无电池writeback或更换原厂bbu恢复性能。

服务器阵列卡缓存电池(BBU)失效后,硬盘写入速度突然暴跌30%~60%,iostat显示await飙升、数据库事务延迟激增,此时系统已强制关闭Write Back缓存——这不是硬盘故障,而是RAID控制器在用性能换数据安全,必须立即验证缓存策略状态并执行安全恢复操作。
确认BBU真实状态与缓存策略是否已降级
第一步:登录服务器带外管理界面(如Dell iDRAC、HPE iLO、华为iBMC),进入“存储”→“RAID控制器”→“电池状态”,查看Battery State字段。若显示Failed、Reconditioning Required或Unknown,说明BBU物理失效已触发保护机制。
第二步:在操作系统中执行命令验证当前缓存策略是否已被强制修改。对于LSI/Broadcom/Dell PERC系列卡:
sudo storcli /c0 show all | grep -A 5 "Cache Policy"
重点检查Write Cache和Read Cache两行。若Write Cache显示Disabled或WriteThrough,即确认缓存策略已降级——这正是写入延迟暴涨的直接原因。
第三步:运行iostat -x 1持续观察5秒,重点关注await和svctm。若await持续>15ms且远高于svctm,说明I/O正在排队等待磁盘同步完成,印证Write Through模式生效。此时【切勿重启服务器或执行任何阵列重建操作】,否则可能丢失尚未刷盘的缓存数据。
临时恢复Write Back缓存(仅限BBU供电正常但报告失效时)
方法一:强制重置BBU学习周期(适用于Dell H730/H740P等PERC卡)
执行命令:sudo megacli -AdpBbuCmd -BbuLearn -aALL
该操作会触发BBU重新进行充放电校准,耗时约30分钟。期间控制器日志将记录“BBU learn cycle started”。若完成后Battery State恢复为Optimal,且Cache Policy自动变回WriteBack,则写入性能可立即回升。
方法二:手动启用无电池保护的WriteBack(高风险,仅限紧急短时使用)
执行命令:sudo storcli /c0 set wrcache=on
此操作绕过BBU健康检查,强制启用Write Back。但【断电将导致未刷盘数据永久丢失】,仅可在UPS供电绝对可靠、且计划2小时内完成BBU更换的场景下启用。
安全更换BBU并启用Write Back缓存
① 关机断电,打开机箱,定位RAID卡上的BBU模块(通常为圆柱形镍氢/锂电封装,带双排针接口)。
② 拔下旧BBU排线,注意排线方向——多数HPE Smart Array与Dell PERC卡要求金手指朝向RAID芯片一侧,插反会导致无法识别。
③ 安装新BBU(务必使用原厂型号,如Dell 0KX9Y、HPE 842321-B21),轻压到位后通电开机。
④ 进入RAID卡配置界面(开机按Ctrl+R/Ctrl+H等,依厂商而定),检查BBU状态是否显示“Charging”或“Optimal”。若仍报错,需执行固件刷新:sudo storcli /c0 download file=bbu_fw.bin(固件文件需从厂商支持站下载对应型号)。
⑤ 等待BBU充电完成(通常需2~4小时),再次运行storcli /c0 show all | grep -A 5 "Cache Policy",确认Write Cache已自动启用且状态为Enabled。此时写入性能恢复正常。











