读策略是什么
读策略决定控制器在读取数据时是否提前把后续数据读进缓存。No Read Ahead 每次读请求都直接落盘取数,适合随机小 IO;Read Ahead 按固定窗口顺序预读,适合大块顺序读;Adaptive(自适应)由控制器根据近期访问模式自动切换,是多数场景的默认值。选错方向会同时浪费带宽并抬高延迟,所以策略要跟着业务形态走。
三种策略对照
| 策略 | 行为 | 适用场景 |
|---|---|---|
| No Read Ahead | 不预读,每次读命中即返回 | 随机小 IO(OLTP 类数据库) |
| Read Ahead | 顺序预读固定窗口 | 顺序大 IO(视频、备份) |
| Adaptive Read Ahead | 按访问模式动态启用 | 混合负载(常用默认值) |
基本信息
| 设置入口 | storcli /c0/v0 set rdcache=RA 或 NoRA(按卡型与固件支持取值) |
|---|---|
| 读取当前值 | storcli /c0/v0 show all 中查看缓存策略相关字段 |
| 作用范围 | 按虚拟盘设置,同一张卡上的不同虚拟盘可采用不同策略 |
| 生效时机 | 设置即时生效,无需重启,但需读回确认 |
设置与核对
设置与核对
storcli /c0/v0 show all | grep -i -E "read|cache" # 查看当前读缓存设置
storcli /c0/v0 set rdcache=RA # 开启预读(顺序场景)
storcli /c0/v0 set rdcache=NoRA # 关闭预读(随机场景)
storcli /c0/v0 show all | grep -i -E "read|cache" # 读回确认已生效典型使用场景
- OLTP 数据库:关闭预读,把预读决策交给数据库自身的访问模式
- 备份与归档:开启预读,充分利用顺序读带宽缩短备份窗口
- 虚拟化宿主机:以随机读取为主时关闭预读,减少无用 IO
- 混合业务:保留自适应策略,让控制器按访问模式自行调整
- 性能对比:在测试环境对同一负载分别设置两种策略,用实测数据决策
选型建议
| 负载特征 | 建议策略 | 理由 |
|---|---|---|
| 随机读为主 | No Read Ahead | 预读拉取的数据不会被使用,浪费带宽 |
| 顺序读为主 | Read Ahead | 预读能掩盖寻道与延迟 |
| 读模式难以预测 | Adaptive | 由控制器按实际访问模式调整 |
| 写入为主 | 影响较小 | 读策略主要作用于读路径 |
数据库与虚拟化环境常用 No Read Ahead,把预读交给应用或文件系统控制,避免控制器与上层重复预读。
不同卡型与固件版本对策略取值的命名有差异;不确认具体取值时先读回当前设置,或在界面工具中对照后再执行写操作。