一台老服务器四块盘做 RAID10,巡检发现写入从 400MB/s 掉到 180MB/s,storcli 里 BBU 状态是 Failed,虚拟盘的写策略被自动改成 Write Through。
一开始怀疑是「电池进入学习周期时也会临时降级,容易被误判成硬件坏」,查了一圈,方向不对。
这类报错背后常见的原因有几处,逐个排除就行。写缓存电池失效后,控制器为保证掉电不丢数据,把策略切到 Write Through。也可能是Write Through 每次写都要等盘确认,顺序写吞吐直接腰斩。
还有一种情况,更换电池后策略不会自动切回 Write Back,需要人工确认。
第一件事是看电池与当前写策略
storcli /c0 show all | grep -iE 'bbu|write policy|cache'
然后确认电池是否真的失效
storcli /c0/bbu show all
更换电池或等学习周期结束后切回写回
storcli /c0/v0 set wrcache=WB
等前面都确认过,再验证策略与实测写入
storcli /c0/v0 show all | grep -i 'write policy' && dd if=/dev/zero of=/data/t bs=1M count=2048 oflag=direct
恢复的判定其实很直接。storcli 里 BBU 状态为 Optimal、虚拟盘写策略显示 Write Back,dd 的写入速度回到 400MB/s 附近且业务写入延迟下降。
Write Back 依赖电池,电池老化时宁可让策略降级也别强行打开,否则掉电会丢缓存里的数据;换完电池记得核对策略是否回落。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
