本文介绍如何在Linux/Windows系统中使用FIO对文件系统进行吞吐和IOPS的性能测试。

前提条件

您已经创建了待测试的文件系统,并将文件系统挂载到ECS实例上。具体操作,请参见快速入门

背景信息

本文示例的性能参数,均为Linux/Windows系统下采用FIO工具的测试结果,以此作为文件存储NAS产品性能指标参考。如果想达到文件存储NAS的官网性能指标 ,建议使用多台ECS进行测试。文件存储NAS的官网性能指标,请参见文件存储 NAS

如果您有任何反馈或疑问,请单击下方按钮联系NAS技术支持进行咨询。

NAS技术支持

注意事项

性能测试前,请注意以下事项。

  • 吞吐最大不会超过ECS内网带宽,如果内网带宽太小,则吞吐会被流量控制。

    例如,您购买的是最低容量的通用容量型NAS文件系统,其初始读带宽为150 MB/s。如果您的ECS内网带宽为100 Mbps,则吞吐最大可达12.5 MB/S,如果要测试达到150 MB/s,则需要至少12台ECS进行测试。 如果您的ECS内网带宽为1 Gbps,则吞吐最大可达到125 MB/s,如果要测试达到150 MB/s,则需要至少2台ECS进行测试。

  • 在Linux操作系统中,NFS客户端对于同时发起的NFS请求数量进行了控制,默认编译的内核中此参数值为2,严重影响性能。请在安装NFS客户端后,修改同时发起的NFS请求数量,提高NFS性能。具体操作,请参见如何修改同时发起的NFS请求数量?
  • 在Windows操作系统中,测试NFS协议NAS文件系统性能会受限于Windows NFS客户端串行执行单个文件系统的请求,请调整-numjobs参数增加FIO测试文件数量。

操作步骤

  1. 远程连接ECS实例。具体操作,请参见ECS连接方式
  2. 安装FIO测试工具。如果已安装,请跳过此步骤,直接运行性能测试命令。
    • Linux操作系统
      操作系统安装命令
      CentOS
      sudo yum install fio
      Redhat
      AlibabaCloud Linux
      Ubuntu依次执行以下安装命令:
      1. sudo apt-get  update
      2. sudo apt-get install fio
      Debian
    • Windows操作系统

      您可以下载msi格式的安装包进行安装。FIO安装包下载地址,请参见fio官网

  3. 运行性能测试命令,具体的命令请参见下文。

Linux系统下的性能测试命令

  • 随机读IOPS:
    fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
  • 随机写IOPS:
    fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
  • 随机读吞吐:
    fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=1M -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
  • 随机写吞吐:
    fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=1M -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt

Windows系统下的性能测试

以通用容量型NAS挂载到Z盘,FIO可执行文件安装在C:\Program Files\fio\fio.exe为例,执行以下命令测试性能。
说明 如果在Windows系统测试NFS协议NAS文件系统性能,受限于Windows NFS客户端串行执行单个文件系统的请求,请调整-numjobs参数增加FIO测试文件数量。
  • 随机读IOPS:
    "c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randread -bs=4K -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\
  • 随机写IOPS:
    "c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randwrite -bs=4K -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\
  • 随机读吞吐:
    "c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randread -bs=1M -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\
  • 随机写吞吐:
    "c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randwrite -bs=1M -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\