You need to enable JavaScript to run this app.
文档中心
云服务器

云服务器

复制全文
下载 pdf
性能测试
测试本地盘性能
复制全文
下载 pdf
测试本地盘性能
本文介绍如何在Linux实例中使用FIO工具测试本地盘存储性能,包括IO延迟、IOPS和吞吐量。​
背景信息​
推荐使用FIO工具测试本地盘性能,FIO是一个对硬件进行压力测试和验证的I/O工具,是一款Linux平台上较为推荐的本地盘性能测试工具。​
FIO分为两种运行方式,本文中测试示例均使用fio jobfile方式,即通过一个job文件来描述待仿真的IO负载,一个job文件可以控制产生任意数目的线程和文件,典型的job文件包含一个global段(定义共享参数)和一个或多个job段(描述具体要产生的job)。​
前提条件​
您已经创建了待测试的本地盘实例。本地盘相关介绍及其标准性能数据请参见本地盘,如何创建实例请参见通过向导购买实例。​
注意​
建议您只在新购买的无数据的ECS实例上使用工具测试本地盘性能,避免造成数据丢失。​
操作步骤​
  1. 从FIO官网下载安装包并传输到实例。数据上传操作请参见本地数据上传。​
  1. 执行以下命令解压缩安装包。​
  • tar -zxvf fio-*.tar.gz​
  1. 执行以下命令,安装FIO。​
  • ​
    cd fio-*​
    ./configure​
    make​
    make install​
    ​
  1. 依次执行以下命令,安装libaio。​
  • ​
    sudo yum -y install libaio​
    sudo yum -y install libaio-devel​
    ​
  1. 执行以下命令查看存储设备是否已经4KiB对齐。如果不是4KiB对齐,则对性能影响较大。​
  • fdisk -lu​
  • 如果返回的Start值能够被8整除则表示4KiB对齐。​
  1. 执行以下命令,切换路径。​
  • cd /tmp​
  1. 运行本地盘性能测试命令,命令示例请参见测试命令示例。​
  1. 若压测时出现NMI watchdog: BUG: soft lockup - xxx错误,可根据在Linux操作系统中调整use_threaded_interrupts参数指引,开启中断线程化提高实时性能和响应性。​
测试命令示例​
以下测试命令适用于NVMe SSD本地盘和SATA HDD本地盘。​
说明​
  • 本示例中,使用的设备名为/dev/your_device,请您根据实际情况替换。例如需要测试的本地盘为/dev/vdb,则将以下示例命令中的/dev/your_device替换为/dev/vdb。​
  • 命令示例中的参数取值仅供参考,请您根据实际情况替换。参数介绍请参见FIO参数说明。​
测试IOPS​
  • 随机读​
  • ​
    fio --group_reporting=1 --direct=1 --iodepth=32 --rw=randread --ioengine=libaio --bs=4k --size=100% --numjobs=8 --runtime=600 --filename=/dev/your_device --name=test​
    ​
  • 随机写​
  • ​
    fio --group_reporting=1 --direct=1 --iodepth=32 --rw=randwrite --ioengine=libaio --bs=4k --size=100% --numjobs=8 --runtime=600 --filename=/dev/your_device --name=test​
    ​
测试吞吐量​
  • 顺序读​
  • ​
    fio --group_reporting=1 --direct=1 --iodepth=128 --rw=read --ioengine=libaio --bs=128k --size=100% --numjobs=1 --runtime=600 --filename=/dev/your_device --name=test​
    ​
  • 顺序写​
  • ​
    fio --group_reporting=1 --direct=1 --iodepth=128 --rw=write --ioengine=libaio --bs=128k --size=100% --numjobs=1 --runtime=600 --filename=/dev/your_device --name=test​
    ​
测试访问时延​
  • 随机读​
  • ​
    fio --group_reporting=1 --direct=1 --iodepth=1 --rw=randread --ioengine=libaio --bs=4k --size=100% --numjobs=1 --runtime=600 --filename=/dev/your_device --name=test​
    ​
  • 随机写​
  • ​
    fio --group_reporting=1 --direct=1 --iodepth=1 --rw=randwrite --ioengine=libaio --bs=4k --size=100% --numjobs=1 --runtime=600 --filename=/dev/your_device --name=test​
    ​
FIO参数说明​
​
参数​
说明​
group_reporting​
测试结果显示模式。​
如果指定该参数,测试结果会汇总每个进程的统计信息,而不是以不同任务来统计信息。​
direct​
是否使用direct I/O,取值:​
  • 1(默认):使用direct I/O,忽略I/O缓存,数据直写。​
  • 0:不使用direct I/O。​
iodepth​
测试时的I/O队列深度,例如-iodepth=128表示FIO控制请求中的I/O最大个数为128。​
rw​
测试时的读写策略,取值:​
  • randwrite:随机写。​
  • randread:随机读。​
  • read:顺序读。​
  • write:顺序写。​
  • randrw:混合随机读写。​
ioengine​
测试时FIO选择哪种I/O引擎。通常选择libaio,更符合日常应用模式。​
bs​
I/O单元的块大小(block size),默认值:4 KiB。​
读取和写入的值可以以read、write格式单独指定,其中任何一个都可以为空以将该值保留为其默认值。​
size​
测试文件的大小。FIO会将指定的文件大小全部读/写完成,然后才停止测试,除非受到其它选项(例如运行时)的限制。​
如果未指定该参数,FIO将使用给定文件或设备的完整大小;也可以将大小作为1到100之间的百分比给出,例如指定size=20%,FIO将使用给定文件或设备完整大小的20%空间。​
numjobs​
测试的并发线程数,默认值:1。​
runtime​
测试时间,即FIO运行时长。​
如果未指定该参数,则FIO会持续将上述size指定大小的文件,以每次bs值为块大小读/写完。​
filename​
待测试的对象路径,路径可以是存储设备名称或者一个文件地址。本文中的FIO测试全部是以整盘为测试对象,不含文件系统,即裸盘测试。同时为了避免误测试到其他盘导致数据被破坏,本示例地址为/dev/your_device,请您正确替换。​
name​
测试任务名称,可以随意设定,例如本示例的test。​
​
有关各参数的更多说明,请参见FIO文档。​
​
最近更新时间:2026.10.14 17:52:03
这个页面对您有帮助吗?
有用
有用
无用
无用