基本用法
安装Fio工具:sudo apt-get install fio
常用命令:
#连续读
fio -filename=/mnt/beegfs/testio -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=120 -group_reporting -name=mytest
#随机读
fio -filename=/mnt/beegfs/testio -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=120 -group_reporting -name=mytest
#顺序写
fio -filename=/mnt/beegfs/testio -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=60 -group_reporting -name=mytest
#随机写
fio -filename=/mnt/beegfs/testio -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=20G -numjobs=10 -runtime=60 -group_reporting -name=mytest
#混合读
fio -filename=/mnt/beegfs/testio -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
压力测试
对beeGFS进行测试
通过sudo beegfs health capacity查看所有储存节点的状态如下:
5个盘都是健康的。
执行命令:sudo beegfs entry info /mnt/beegfs/testfio,得到结果如下:
我们要测试的文件/testfio分布在4个盘上,条带化策略是RAID0。
执行命令测试随机读取IO性能:fio -filename=/mnt/beegfs/testfio -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=2G -numjobs=300 -runtime=120 -group_reporting -name=mytest
bs=4k代表4k的读取。 -numjobs代表线程数。测试结果如下:
对本地单盘进行测试
执行命令:fio -filename=/data1/zxl_data/testfio -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=2G -numjobs=300 -runtime=120 -group_reporting -name=mytest
测试结果如下:
对nasv3进行测试
执行命令:fio -filename=/mnt/nasv3/testfio -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=2G -numjobs=300 -runtime=120 -group_reporting -name=mytest
测试结果如下:
实验结果分析
参数说明:
| 配置项 | 取值 | 配置说明 |
|---|---|---|
| 测试类型 | randread | 4K 随机读,对 IOPS 敏感,考验分布式系统的元数据管理与数据分片能力 |
| 块大小 | 4k | 小 IO 场景,是衡量存储系统随机性能的典型指标 |
| 队列深度 | iodepth=1 | 同步 IO 模式(psync 引擎),每次仅处理一个 IO 请求 |
| 并发线程数 | numjobs=300 | 超高并发,远超 HDD 和大多数 NAS 的物理处理能力,但可被 BeeGFS 的多盘并行特性分摊压力 |
| IO 引擎 | psync | 同步阻塞式 IO,每个线程都在等待磁盘响应 |
| 直接 IO | direct=1 | 绕过客户端文件系统缓存,直接测试后端存储性能 |
| 测试文件大小 | 2G | 大小适中,避免因文件过小导致数据被 NAS 缓存 |
| 测试时长 | 120s | 测试周期足够长,结果具有统计意义 |
实验结果横向对比
| 受测试设备 | IOPS | 平均延迟 | 优势场景 | 劣势场景 |
|---|---|---|---|---|
| /mnt/beegfs | 1619 | 184ms | 高并发随机读写、大规模数据并行处理 | 超高并发下存在长尾延迟,条带化配置需优化 |
| /data1/zxl_data | 680 | 439ms | 低并发顺序读写 | 随机读写性能差,无扩展性 |
| /mnt/nasv3 | 609 | 490ms | 多客户端共享存储 | 网络开销大,随机读写性能低 |
性能瓶颈定位
条带化配置未优化 (核心瓶颈)
- BeeGFS 的性能高度依赖条带大小和条带宽度配置:
- 条带宽度:需设置为等于磁盘数(4),确保数据均匀分布到所有磁盘;
- 条带大小:4K 随机读场景下,建议条带大小设置为
64K~256K(过小会增加元数据开销,过大则无法充分利用并行 IO)。 - 当前 2.38 倍的性能提升,低于 4 盘的理论上限,大概率是条带化配置未匹配 4K 随机读场景。
超高并发线程数 (次要瓶颈)
- 300 线程远超 BeeGFS 的最优并发数(通常分布式文件系统的最优并发线程数为
磁盘数 × 8~16,即 4 盘对应 32~64 线程)。 - 过多线程导致上下文切换开销增加和元数据服务器竞争加剧,是长尾延迟的主要原因。
- 300 线程远超 BeeGFS 的最优并发数(通常分布式文件系统的最优并发线程数为
元数据服务器性能 (潜在瓶颈)
- 随机读场景下,BeeGFS 需要频繁查询元数据服务器(MDS)获取数据块的物理位置。
- 如果 MDS 为单节点部署,且未使用 SSD 缓存元数据,会成为高并发下的性能瓶颈,导致尾部延迟升高。
结论
- 4 盘 BeeGFS 系统在相同超高并发配置下,性能显著优于本地单 HDD 和 NFS NAS,充分验证了分布式并行存储的优势;
- 当前性能未达理论上限,后续可通过调整优化条带化配置,可有 30%~50% 的 IOPS提升空间;
- BeeGFS 适合高并发、大规模的高性能计算(HPC)和 AI 训练场景,是本地单盘和 NAS 的理想升级方案。




