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

强调:使用dd命令测试时,数据一定要大于主机内存
4G=1m*4096

dd相关选项及参数讲解

    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

附、dd工具制作磁盘镜像

1、创建raw格式的磁盘文件(预分配方式)
    dd if=/dev/zero of=/root/test1.img bs=1M count=1024

2、创建精简置备镜像文件
    dd if=/dev/zero of=/root/test2-seek.img bs=1M seek=1024 count=0
    #seek选项会在开头跳过1024个块儿,再开始复制,由于count=0 所以dd没有进行复制,这就有了1M*1024的空洞文件

    dd if=/dev/zero of=/root/loop.img bs=1G seek=10000 count=0     #创建超大容量的文件(创建一个10T的文件)
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/124.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2023/4/9作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录