首页/系统/服务器硬件与 RAID 速查/阵列写策略:Write-Back 与 Write-Through
RAID 级别与计算68 条

阵列写策略:Write-Back 与 Write-Through

Write-Back 先把数据写入卡上缓存即返回,性能高但依赖掉电保护;Write-Through 等数据落到盘再返回,更安全但慢。电池/电容状态会改变控制器的默认策略。

写策略怎么选

写策略决定控制器在什么时点向操作系统确认写完成。Write-Back(WB)先把数据写进卡上缓存就返回,性能高,但必须有掉电保护兜底;Write-Through(WT)等数据真正落到盘再返回,更安全但慢。部分卡还提供 Always Write Back,即忽略电池状态强行使用缓存加速,性能最好但掉电丢数据的风险完全由业务承担,生产环境不建议开启。

策略对照

策略行为性能掉电风险
Write-Back先写缓存后落盘高有电池或电容保护时可控,无保护则丢数据
Write-Through直写磁盘后返回低无缓存数据丢失
Always Write Back忽略电池状态使用缓存最高完全依赖运气,不建议生产使用

查看与修改(storcli 示例)

查看与修改(storcli 示例)
storcli /c0/v0 show all | grep -i "write"        # 查看当前写策略
storcli /c0/v0 set wrcache=WB                     # 改为 Write-Back
storcli /c0/v0 set wrcache=WT                     # 改为 Write-Through
storcli /c0/bbu show all | grep -iE "state|Failed" # 确认保护模块状态
storcli /c0/cv show all                           # 电容(CacheVault)状态

相关概念

保护模块BBU 电池或超级电容 + 闪存模块,负责掉电时把缓存内容保存下来
Learn Cycle电池定期自检,期间策略可能临时降级为 Write-Through
Read 策略Direct 与 Cached,影响顺序读的预读行为
策略漂移更换电池或固件升级后策略可能被重置,交付验收要复核

怎么选

  • 有健康的电池或电容:Write-Back,兼顾性能与安全
  • 保护模块故障或未安装:Write-Through,宁可慢也不要丢
  • 性能压测阶段:可临时启用 Write-Back 观察上限,压测结束回到与保护状态匹配的策略
  • 任何情况下都不建议 Always Write Back:性能数字好看,代价是数据
电池或电容故障时部分卡会自动切到 Write-Through;发现性能突变时先查缓存策略是否被降级,再怀疑别的地方。

易错点

  • 为了性能强行开启 Write-Back 而电池已故障:掉电即丢近期写入,风险完全不可控
  • 虚拟机与数据库自身的缓存策略叠加:需要端到端一致地设计(如 fsync 语义与写屏障)
  • 更换电池或升级固件后不复核策略:策略被重置为默认值,性能与安全性同时变化
  • 把 Learn Cycle 期间的性能波动当故障:属于设计行为,但巡检要把该状态纳入监控
  • 只在压测时看数字不记录策略:上线后发现性能对不上,排查从零开始
  • 把 Read 策略当无关参数:预读行为会显著影响顺序读与缓存命中,交付验收时也要记录

数据来源与参考

  • Broadcom MegaRAID 用户指南(Write Policy)
  • storcli 命令参考
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌