VPS主机和服务器磁盘IO读写速度测试方法-VPS主机真实IO检测工具

VPS主机磁盘IO的好坏直接影响到VPS主机性能的高低。对于测试VPS主机的性能,我们有非常多的脚本工具,例如:VPS主机速度和性能综合测试工具整理汇总中我们就分享了不少的脚本工具,可以快速地测试VPS主机的CPU、内存和带宽等。

不过,有好友反馈说对于VPS主机的磁盘IO测试,脚本测出来的结果差别比较大,甚至直到建站时才发现购买的VPS主机的IO太低,严重影响了性能。这篇文章就来分享一下VPS真实IO检测工具:DD、hdparm、Sysbench和FIO。

VPS主机和服务器磁盘IO读写速度测试方法-VPS主机真实IO检测工具

VPS主机的IO速度是我们用于衡量主机的性能指标之一,更多的VPS主机实用工具:

  1. Docker可视化容器管理工具Portainer – 让Docker安装与管理更简单
  2. Nginx规则自动在线生成工具-Nginx Config配置文件在线生成器
  3. VPS主机一键自动重装系统脚本优化版-一键DD安装Linux和Windows系统

PS:更新记录。

1、管理VPS主机需要用到远程连接工具:WindTerm开源免费的VPS主机远程连接管理工具-功能强大 颜值漂亮。2023.4.24

一、DD命令工具

DD命令如下:

dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

以上代码中conv=fdatasync与oflag=dsync的区别在于:sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。fsync函数只对由文件描述符filedes指定的单一文件起作用,并且等待写磁盘操作结束,然后返回。

DD命令工具

所以,不带缓存的IO读写测试才是硬盘的真实读写速度,一般来说低于30MB/s算是慢的了。

二、Hdparm工具

Hdparm是Linux的命令行程序,用于设置和查看ATA硬盘驱动器硬件参数并测试性能。首先是安装:

yum install hdparm -y
#apt install hdparm -y

然后是找出当前的硬盘。

fdisk -l

接着就可以开始测试了。命令如下:

sudo hdparm -tT /dev/sda2

测试结果如下图:

Hdparm测试工具

三、Sysbench工具

网站:

  1. https://github.com/akopytov/sysbench

Sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。sysbench 支持的测试有CPU运算性能测试、内存分配及传输速度测试。首先是安装:

sudo apt install sysbench

然后是生成需要的测试文件,完成后会在当前目录下生成很多小文件。

sysbench --test=fileio --num-threads=20 --file-total-size=1G --file-test-mode=rndrw prepare

测试执行:

sysbench --test=fileio --num-threads=20 --file-total-size=1G --file-test-mode=rndrw run

测试完了,就可以看到相关的读写速度了。

Sysbench测试工具

清理测试时生成的文件。

sysbench --test=fileio --num-threads=20 --file-total-size=1G --file-test-mode=rndrw cleanup

四、Fio测试工具

Fio是Linux下开源的一款IOPS测试工具,主要用来对磁盘进行压力测试和性能验证。它可以产生许多线程或进程来执行用户特定类型的I/O操作,通过编写作业文件或者直接命令去执行测试动作,相当于是一个 多线程的io生成工具,用于生成多种IO模式来测试硬盘设备的性能。

首先是安装:

sudo apt install fio

测试读命令:

fio --name TEST --eta-newline=5s --filename=temp.file --rw=read --size=2g --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Fio测试工具读速度

测试写命令:

fio --name TEST --eta-newline=5s --filename=temp.file --rw=write --size=2g --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Fio测试工具写速度

测试随机读写命令:

fio --name TEST --eta-newline=5s --filename=temp.file --rw=randrw --size=2g --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Fio测试工具读写速度

相关的说明如下:

-rw=randwrite:读写模式,randwrite是随机写测试,还有顺序读read,顺序写write,随机读randread,混合读写等。
-ioengine=libaio:libaio指的是异步模式,如果是同步就要用sync。
-direct=1:是否使用directIO。
-thread:使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。
–numjobs=1:每个job是1个线程,这里用了几,后面每个用-name指定的任务就开几个线程测试。所以最终线程数=任务数* numjobs。
-iodepth=64:队列深度64.
-filename=/dev/sdb4:数据写到/dev/sdb4这个盘(块设备)。这里可以是一个文件名,也可以是分区或者SSD。
-size=10G:每个线程写入数据量是10GB。
-name=job1:一个任务的名字,名字随便起,重复了也没关系。
-offset=0MB:从偏移地址0MB开始写。
-bs=4k:每一个BIO命令包含的数据大小是4KB。一般4KB IOPS测试,就是在这里设置。
-output TestResult.log:日志输出到TestResult.log。

五、总结

在给硬盘测试IO时,还可以使用命令查看磁盘的压力,命令:iostat -x 1 10,如果没有执行安装:yum install sysstat,主要查看%util %idle ,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,idle小于70% IO压力就较大了,一般读取速度有较多的wait。

VPS磁盘性能

DD、Hdparm、Sysbench、FIO这个工具测试的数据相差比较大,DD命令比较直观,但是准确性不一定高,Sysbench、FIO相当于综合性的测试工具,可以全方位地了解磁盘的IO读写性能,推荐使用。

文章出自:挖站否 https://wzfou.com/io-ceshi/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。


分享到:
Avatar for Qi
关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。
已有 7 条评论
  1. 感谢博主的分享

    2023年4月19日 13:12 回复
  2. 好用的工具。非常感谢无私分享!

    2023年4月9日 12:55 回复
  3. Avatar for yeyt yeyt

    收藏了

    2023年4月5日 11:12 回复
  4. Avatar for hfdtki hfdtki

    用这个方法检测SSD都是慢的

    2023年4月3日 10:13 回复
  5. Avatar for uo uo

    这个测试出来的结果数值好像要慢

    2023年4月2日 19:33 回复
  6. Avatar for fre fre

    这个很强

    2023年4月2日 12:05 回复
  7. Avatar for bi bi

    感谢,这个方法不错

    2023年4月1日 18:56 回复

Login

Welcome! Login in to your account

Remember me Lost your password?

Don't have account. Register

Lost Password

Register