安装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
通过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
测试结果如下:

执行命令: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 | 多客户端共享存储 | 网络开销大,随机读写性能低 |
条带化配置未优化 (核心瓶颈)
64K~256K(过小会增加元数据开销,过大则无法充分利用并行 IO)。超高并发线程数 (次要瓶颈)
磁盘数 × 8~16,即 4 盘对应 32~64 线程)。元数据服务器性能 (潜在瓶颈)