首页/系统/服务器硬件与 RAID 速查/条带大小(Strip Size)的选择
RAID 级别与计算68 条

条带大小(Strip Size)的选择

条带元素大小决定单个磁盘上连续数据块的长度,直接影响小块 IO 的并发度与大块顺序的性能:小条带并发好,大条带适合大 IO 与视频流。

条带大小是什么

条带元素(Strip Size,mdadm 里叫 chunk)指的是写在单块盘上的一段连续数据的长度。一个读写在阵列上的分配规则是:请求大小超过条带元素后才会跨到别的盘,形成并发;小于条带元素时整笔请求只落在一块盘上。所以小条带让小额随机 IO 更容易跨盘并发,大条带更契合大块顺序读写与视频流。

基本信息

常见取值64KB / 128KB / 256KB / 512KB / 1MB(LSI 卡条带元素 64KB~1MB 可选)
LSI 默认256KB(卡菜单里的 Stripe Size 指单盘上的条带元素长度)
mdadm 单位--chunk 以 KB 为单位,含义与卡的条带元素一致
经验选择数据库 64~128KB;文件与备份 256~512KB;视频流与大文件可到 1MB
条带宽度= 条带元素 × 数据盘数,写满整条带时 RAID 5/6 才不需要读改写
修改代价多数控制器与 md 都不支持在线改条带,需重建或迁移

指定与查看条带

指定与查看条带
mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=128 /dev/sd[b-e]1
cat /proc/mdstat                                                    # 查看阵列状态
mdadm --detail /dev/md0 | grep -i chunk                             # 查看当前条带元素
storcli /c0/v0 show all | grep -i -E 'Strip|Size'                   # 硬件卡上的条带信息
# 条带宽度换算:128KB x 4 块数据盘 = 512KB,文件系统按此对齐更贴合

典型业务的取值建议

业务类型推荐条带元素理由
数据库 OLTP64~128KB随机小额 IO 多,小条带更容易跨盘并发
虚拟化主机128~256KB混合负载,取折中值
文件服务器256KB大文件顺序读为主
视频与备份512KB~1MB单流大块顺序写,条带大可减少跨盘管理开销
日志与顺序写卷256~512KB顺序写占绝对多数,避免过小条带
条带宽度 = 条带元素 × 数据盘数:RAID 5/6 上只有请求覆盖整条带时才能省掉读旧值的开销,因此数据库与虚拟化场景常把文件系统块按条带宽度对齐。
条带大小上线后基本改不了:多数硬件卡需要重建或迁移阵列,md 也不支持在线修改,规划阶段就要按业务特征定好。

易错点

  • 把条带元素与条带宽度混为一谈:两者相差数据盘数倍,配置与测试时容易差一个量级
  • 上线后想调整条带大小:多数控制器与 md 都要重建或迁移阵列,代价远超预期
  • 小条带配大块顺序写业务:跨盘管理开销增加,顺序带宽反而下降
  • 文件系统块与条带不对齐:部分写入变成读改写,RAID 5/6 的写惩罚被放大
  • 照搬网上参数不看业务:同是数据库,OLTP 与数据仓库的最佳条带完全不同

数据来源与参考

  • man 8 mdadm(--chunk)
  • Broadcom MegaRAID 用户指南(Stripe Size)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌