Linux使用dd命令测试硬盘读写速度

2019-07-23 08:43栏目:电脑操作

测试基于虚拟机,不保证在真机上的真实准确性,真实服务器只能比这个快,仅供参考而已,年前封箱文。

Linux服务器装好系统之后,想要知道硬盘的读写是否能满足服务的需要,如果不满足硬盘的IO就是服务的一个瓶颈。所以我们需要测试硬盘的读写速度,测试的方法很多,下面是使用Linux 自带的dd命令测试硬盘的读写速度。
 
time有计时作用,dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写的大小,即一个块的大小,count是读写块的数量。
 
测/data目录所在磁盘的纯写速度:
 
[root@nagios ~]# time dd if=/dev/zero of=/var/test bs=8k count=1000000
 1000000 0 records in
 1000000 0 records out
 8192000000 bytes (8.2 GB) copied, 52.5749 seconds, 156 MB/s
 
real    0m55.841s
 user    0m0.507s
 sys    0m15.706s
 
##红色部分是因为使用了time命令才显示的,因此需要time命令来计算复制的时间。
 
测/data目录所在磁盘的纯读速度:
 
[root@nagios ~]# time dd if=/var/test of=/dev/null bs=8k
 1000000 0 records in
 1000000 0 records out
 8192000000 bytes (8.2 GB) copied, 49.0088 seconds, 167 MB/s
 
real    0m49.025s
 user    0m0.559s
 sys    0m6.383s
 
测读写速度:
 
[root@nagios ~]# time dd if=/var/test of=/tmp/test bs=64k
 125000 0 records in
 125000 0 records out
 8192000000 bytes (8.2 GB) copied, 129.239 seconds, 63.4 MB/s
 
real    2m9.251s
 user    0m0.114s
 sys    0m21.494s
 
看来这个测试结果还不错,嘿嘿  

环境:

备注:理论上测试复制量越大测试结果越准确。
 
正常测试的时候可能不止测试一边,可能会需要很多遍求取平均值,这个测试结果在普通的重定向是没有效果的 之后 google 了一下 用下面的方式重定向到一个文件
 
dd if=/dev/zero of=/var/test bs=8k count=1000000  2>> info
 
这样测试的结果就到info文件里面了

VirtualBox 4.1.8

图片 1

Intel i3 2100 3.1GHz 4核

分配虚拟机2核,1024M内存

硬盘是ST500D ATA Device

OpenBSD 5.0 with FFS

FreeBSD 9.0 with UFS2

Ubuntu 11.10 server with EXT4

CentOS 5.7 with EXT4

测试命令:

写入1G文件

time dd if=/dev/zero of=/tmp/1GB bs=4096 count=250000

读取1G文件

time dd if=/tmp/1GB of=/dev/null bs=4096 count=250000

同时读写

time dd if=/tmp/1GB of=/tmp/1GB.a bs=4096 count=250000

红色为最快,绿色为最慢。

FFS read write read&write
default 6.63s 14.24s 26.81s
async 6.56s 13.81s 27.77s
softdep noatime 6.57s 13.77s 27.83s
UFS2
default 2.97s 15.23s 16.28s
async 3.07s 13.11s 15.28s
EXT4
ubuntu 11 3.94s 4.40s 6.25s
centos 6 4.61s 5.74s 7.07s

OpenBSD和FreeBSD为了保证其数据的掉电安全性,包揽全部项目最慢桂冠。不过其基于同步IO的操作,数据可靠性是有相当保证的。

在OpenBSD中,比较意外的是async和noatime,softdep的方式,async为BSD系统强烈不推荐的方式,认为其异步方式会造成数据掉电丢失,但是,从测试上看,OpenBSD的异步和softdep方式,并没有比同步方式强多少。尽管在OpenBSD内的比较重,async方式没有拿到最慢奖,但速度也只是零点几秒的差异。而同时读写的速度是慢的比较离谱,所以,OpenBSD确实不适合做应用服务器使用,更适合当个路由器或者防火墙。

FreeBSD的UFS2比较令我意外,居然是读取速度最快的,但是写入速度却是所有操作系统里最慢的。所以,FreeBSD可以考虑做历史数据存储备份使用。或者做读操作密集型应用的服务器。

作为Linux最新推出的EXT4,确实在读写速度上让人一亮。特别是ubuntu,包揽写入和同步读写两个冠军,实在令人刮目相看。相比之下,CentOS6的速度就比较平庸了。而且在3项对比上,ubuntu几乎所有项目都比centos快了1秒,在服务器应用上这已经是很大的差距了,对于Linux系统就不用要求数据的掉电安全性了。至于为什么,去找ext4原理看看就知道了。不要小看1秒的差距,最终这是个累计误差的问题,1G误差1秒,60G就是1分钟,3.6T的数据就是1小时了。如果搞海量分析,还是选ubuntu或者FreeBSD比较好。

所以,窃以为,OpenBSD的FFS比较适合做网关,路由,防火墙,你要拿他来做mysql,webserver,那就等死吧,虽然安全,但是性能实在是差了许多。

FreeBSD适合做存储或者读取密集型的应用服务器,比如webserver或者专供select的mysql slave服务器。

ubuntu/debian,适合写入密集型或者读写密集型的应用,典型的就是mysql master或者基于web的文件服务器。

至于centos么,如果你决定用Linux,还是把它扔了吧。

由于公司网络对于下载的限制,本次没有时间测试SUSE,不过,我猜测,SuSE的性能会优于CentOS,否则腾讯就不会用SuSE当开放平台的服务器了。

图片 2

版权声明:本文由威尼斯人app发布于电脑操作,转载请注明出处:Linux使用dd命令测试硬盘读写速度