强调:使用dd命令测试时,数据一定要大于主机内存

4G=1m*4096

选项及参数讲解

bs=4k #指块大小,默认单位是字节,此为4kB(千字节)

count=2000 #是块的数量,两者相乘便是总量,此为2000个bs,

conv=fdatasync #结束前将输出文件数据写入磁盘,可选参数如下( fdatasync | fsync | sync )

#fdatasync:结束前将输出文件数据写入磁盘

#fsync:结束前将输出文件数据和元数据metadata(包括size、访问时间st_atime & st_mtime等)写入磁盘(此测试方式最有意义)

#sync:启用操作系统的写缓存,先把数据写给操作系统“写缓存”,就完成了写操作。通常称为update的系统守护进程会周期性地(一般每隔30秒)调用sync函数,把“写缓存”中的数据刷入磁盘。(不加时默认启用)

oflag=dsync #使用同步I/O 存取模式,可选参数如下 ( dsync | sync | direct | nonblock )

#dsync:使用同步I/O 存取模式

#sync:使用同步I/O 存取模式,同也对元数据metadata生效

#direct:使用直接I/O 存取模式

#nonblock:使用无阻塞I/O 存取模式

if=/dev/zero #数据输入来源,设为/dev/zero不产生IO,因此可以用来测试纯写速度;

of=/dev/null #数据输出去向,设为/dev/null不产生IO,可以用来测试纯读速度;

+++++++++++++++++++++++++

测试实例

测试小文件单纯的写速度(共5G,每块4k,1310720块)

time dd if=/dev/zero of=test bs=4k count=1310720 conv=fsync

测试小文件单纯的写速度(共5G,每块8k,655360块)

time dd if=/dev/zero of=test bs=8k count=655360 conv=fsync

测试大文件单纯的写速度(共10G,每块50M,205块)

time dd if=/dev/zero of=test1 bs=50M count=205 conv=fsync

测试大文件单纯的写速度(共10G,每块10M,1025块)

time dd if=/dev/zero of=test1 bs=10M count=1025 conv=fsync

测试小文件单纯读速度

time dd if=test of=/dev/null bs=8k

测试大文件单纯读速度

time dd if=test1 of=/dev/null bs=64k

测试小文件读写速度

time dd if=test of=test2 conv=fsync

测试大文件读写速度

time dd if=test1 of=test3 conv=fsync

特别注意:

dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync

#加入oflag=dsync这个参数后,每次读取8k后就要先把这8k写入磁盘,然后再读取下面一个8k,一共重复4K次。这是最慢的一种方式了。

dd bs=8k count=4k if=/dev/zero of=test conv=sync

#conv=sync参数明确“写缓存”启作用,默认值就是conv=sync

dd对裸设备的测试

1、裸设备到文件系统

dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841

2、文件系统到裸设备

dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8