bonnie++专用于评估小文件吞吐与元数据操作性能,适用于文件服务器、日志归档、邮件系统等场景;不适合数据库、高并发随机I/O及NVMe极限延迟测试,因其不支持队列深度、异步I/O定制和读写混合比例配置。

bonnie++ 不是万能的磁盘测速器,它专为评估「小文件吞吐 + 元数据操作」设计,比如文件服务器、日志归档或邮件系统这类场景。它测的是文件系统在真实业务负载下的响应能力,而不是裸盘极限吞吐——这点必须先拎清楚。
bonnie++ 适合测什么
它最擅长反映以下三类典型压力:
- 顺序读写吞吐:比如批量上传下载、日志归档回写,看 Sequential Output 和 Sequential Input 这两行
- 小文件创建/删除效率:邮件归档、临时缓存清理等高频元数据操作,关键看 Create files in sequential order 和 Delete files in random order
- 随机寻道能力:对应大量小文件混合访问,参考 Random seeks/sec,但注意它不模拟队列深度,结果偏保守
关键参数怎么设才靠谱
默认参数容易误导,尤其要注意这几点:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- -s 参数要够大:建议至少设为物理内存的 2 倍(如内存 8G,-s 16384),否则测试文件太小,结果被 page cache 主导;若想提速,可加 -r 指定内存大小,但需同步加 -b 或 -D 避免缓存干扰
- -n 控制元数据测试强度:默认只建删 100 个文件,根本压不出瓶颈;测文件服务建议 -n 1000 或更高,否则 Create/Delete 指标没参考价值
- 绕过缓存要主动选:-b(每次写后 fsync)适合数据库、邮件等强一致性场景;-D(O_DIRECT)适合测纯磁盘路径,但某些内核版本可能失败,建议先试 -b
- 测试目录空间必须充足:至少预留 2×-s 指定的空间,否则中途报 No space left on device 不提示具体哪步失败
结果里最容易踩坑的三行
报告末尾的 ------Sequential Output------ 下有三列数字,常被误读:
- 第一列(Per Chr):逐字节写入速度,受 libc 缓冲影响大,不同系统不可比,一般忽略
- 第二列(Block):块写入速度(默认 1MB chunk),代表主流顺序写能力,看这一项
- 第三列(Rewrite):重写已有文件的速度,反映文件系统 overwrite 效率,对日志轮转类场景很关键
什么时候别硬上 bonnie++
它不是通用 I/O 压测工具,以下情况请换 fio 或 iozone:
- 测数据库场景(如 MySQL/PostgreSQL):bonnie++ 不支持指定 queue depth、异步 I/O 行为或读写混合比例,随机读写结果和真实 workload 差距大
- 测 NVMe 或高性能 SSD 的极限延迟:它用多线程模拟而非真正 async I/O,Random Seek 结果偏低,不代表硬件真实能力
- 做容量规划依据:它的随机性能指标不能直接映射到 OLTP QPS,别拿 bonnie++ 的 IOPS 去估算生产库并发数


















