Linux下硬盘IO测试命令dd的介绍和使用方法

当我们拿到一台VPS主机的时候,我们是不是经常迫不得已的想要对VPS的性能进行测试,其中包括CPU,内存,网络和硬盘读写速度的测试。今天我们就来研究一下如何对硬盘的IO速度进行测试。



首先我们来了解一些名词

IO:Input & Ouput,输入输出,即读与写。


下面我们来了解一下今天的主角:dd命令

首先我们来看看下面4条命令

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

这四条命令,都是使用dd命令来执行的,区别在于这四条命令在内存中写缓存的处理方式。


dd bs=64k count=4k if=/dev/zero of=test
没有加任何参数,dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。所以你得到的将是一个超级快的速度。因为其实dd给你的只是读取速度,直到dd完成后系统才开始真正往磁盘上写数据,但这个速度并不会显示出来给我们看到。所以即使这个命令最终输出的速度很快,其实也没有什么作用。

dd bs=64k count=4k if=/dev/zero of=test; sync
和上一条命令的完全一样,分号隔开的sync命令只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。


dd bs=64k count=4k if=/dev/zero of=test conv=fdatasync
加上conv=fdatasync这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候你得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际使用结果的。


dd bs=64k count=4k if=/dev/zero of=test oflag=dsync
加上oflag=dsync这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取64k后就要先把这64k写入磁盘,然后再读取下面这64k,一共重复4 * 1024次。这种方式非常的慢,基本上没有用到写缓存(write cache)。因此这种方式测试出来的速度也是最准确可靠的。


我觉得利用dd命令测试硬盘读写速度,一般情况下只要用第4条命令就可以了。另外,dd测试结果显示越大并不一定说明服务器的性能越好,普通硬盘的服务器执行dd命令测试结果在30M/s左右就已经算是不错了。

注意:执行dd命令测试硬盘IO性能,对硬盘的损害很大,不建议多次或长时间尝试!


  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号