文件系统测试测什么:如何用冷缓存顺序读写基准评估存储吞吐
更新时间
文件系统测试在这里指的是测量某个卷及其下层文件栈能达到的最大顺序读写速度,而不是检查文件权限、日志或目录功能是否正常。CCSIO Benchmark 就是这类工具:它针对本地盘、网络共享、RAM 盘、加密文件容器等指定位置,遍历大量 I/O 参数组合,找出能达到最高吞吐的那一组。它要求 Windows Vista 或更新系统,安装包 238 KB,版本 1.5.0(2019 年 6 月 26 日发布)。如果你要回答“这块盘或这个共享实际能跑多快”,它适用;如果你要验证文件系统功能正确性,它不适用。
测试对象与核心机制
读写文件本质上是把内存缓冲区(块)交给操作系统,让它用磁盘数据填充缓冲区,或把缓冲区内容写入文件。CCSIO Benchmark 围绕三个变量做组合:
- IO 缓冲数量:一次并发提交多少个缓冲块
- IO 缓冲大小:每个块多大
- IO 缓存模式:无缓冲、无缓冲顺序、缓冲顺序(读/写)
每个“缓冲大小 × 缓冲数量 × 缓存模式”的组合构成一次测试运行。基准会遍历这些组合,报告其中达到的最高吞吐率。关键点在于:最优组合随物理设备类型、设备与主机的连接方式、文件栈组成而显著变化。SSD 上表现好的参数,放到 HDD 或虚拟磁盘上往往不是最优,反之亦然。
页面给出的例子很能说明问题:同一组参数下,Samsung MZVPV512 NVMe 盘的最大读速为 2158.0 MBps(8 × 512 KB)和 1974.1 MBps(16 × 2 MB),而 SSD 上的 TrueCrypt 加密卷只有 317.5 MBps 和 338.4 MBps。加密层叠加后,吞吐下降一个量级,且最优缓冲组合也变了。
默认测试规模与限制
默认参数如下:
| 参数 | 取值 |
|---|---|
| 缓冲大小 | 8K、16K、32K、64K、128K、256K、512K、1M、2M、4M、8M、16M |
| 缓冲数量 | 1、2、4、8、16 |
| IO 模式 | 无缓冲读/写、无缓冲顺序读/写、缓冲顺序读(仅读) |
按 12 种大小 × 5 种数量 ×(2 或 3)种模式计算,单次基准包含 180 项读测试和 120 项写测试,合计 300 项。每项测试时长 1 秒,这是软限制,实际可能略长;在空闲机器上通常足以得到准确的速度估计。另有 64 MB 内存上限:总缓冲空间超过该值的测试会被跳过,测试数降到 285 项,总运行时间约 5 分钟。
操作步骤与结果验证
- 确认前提:Windows Vista 或更新系统;目标位置可写(写测试需要);测试期间尽量让机器空闲,避免其他 I/O 干扰 1 秒级的短测试。
- 选择测试位置:本地盘、网络共享、RAM 盘或加密容器均可,基准测的就是该位置及其下层文件栈。
- 运行基准:等待其遍历参数组合,约 5 分钟(受 64 MB 上限影响时为 285 项测试)。
- 读取结果:关注每个设备/文件栈报告的最大读速和最大写速,而不是某一组固定参数下的数值。
- 验证方法:对同一位置重复运行,观察最高吞吐是否稳定;对比不同设备时,确保测试位置、机器空闲状态一致,再比较各自的最大值。
常见卡点:把某一组参数的结果当成设备上限——实际上基准的意义正是找出最优组合;在忙碌机器上测试,1 秒的短测试容易被后台 I/O 拉低;忽略缓存模式差异,把缓冲读的结果与无缓冲写的结果直接对比。
如何解读对比结果
解读时抓住两条:
- 比最大值,不比单点:不同设备的最优缓冲组合不同,应比较各自遍历后的最高吞吐。NVMe 盘与加密卷的例子中,前者超过 2000 MBps,后者约 300 MBps 出头,差距来自文件栈中的加密层。
- 差异先查缓存与设备类型:缓冲顺序读可能借助系统缓存抬高读数,无缓冲模式更接近真实磁盘路径;HDD、SSD、虚拟盘、网络共享的瓶颈各不相同,同一组参数不可跨类型套用。
需要评估本地盘、网络共享、RAM 盘或加密容器的实际顺序吞吐时,用这套冷缓存顺序读写基准跑一遍并比较最大值,比凭单组参数下结论更可靠。