dd命令

作者: 祁小彬 | 来源:发表于2022-04-22 14:19 被阅读0次

一、dd命令的解释
dd命令主要是用来块拷贝一个指定大小的文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

参数注释:

  1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

  2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写的大小,即一个块的大小,count是读写块的数量。

  1. ibs=bytes:一次读入的bytes个字节,即指定一个块大小为bytes个字节。

    obs=bytes:一次写入的bytes个字节,即指定一个块大小为bytes个字节。

    bs=bytes:同时设置读入/输出的块大小为bytes个字节。

  2. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

  3. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

  4. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

  1. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

  2. conv=conversion:用指定的参数转换文件。

fdatasync 完成dd命令前,写文件数据到磁盘
fsync 除文件数据外,同时也写元数据

  1. iflag, oflag 的关键symbol:

dsync 用同步I/O操作数据

sync 除文件数据外,同时也写元数据

如果要规避掉文件系统cache,直接读写,不使用buffer cache,需做这样的设置
iflag=direct,nonblock
oflag=direct,nonblock

dd 命令三种经典使用方法:

dd if=/dev/zero of=test bs=64k count=16k 是不准确的,可能有数据存在内核缓存中,没有同步到磁盘上。对于关键数据应该加上fsync标识,防止关键数据丢失;

dd if=/dev/zero of=test bs=64k count=16k conv=fsync 较为稳妥,但是时间用时较长,他在dd结束前会写数据和文件元数据到磁盘;

dd if=/dev/zero of=test bs=64k count=4k oflag=dsync or sync 每写一次就写一次磁盘,在实际操作中,可以听到磁盘响声,用时较长;

二、测试磁盘写吞吐量
使用dd命令对磁盘进行标准写测试。使用一下命令行读取和写入文件,记住添加oflag参数以绕过磁盘页面缓存。

dd if=/dev/zero of=here bs=1G count=1 oflag=direct

记录了1+0 的读入

记录了1+0 的写出

1073741824字节(1.1 GB)已复制,13.6518 秒,78.7 MB/秒
三、结合nc命令测试网络
Server1使用nc监听17480端口的网络I/O请求:

[root@server1 ~]# nc -v -l -n 17480 > /dev/null

Ncat: Version 6.40 ( http://nmap.org/ncat )

Ncat: Listening on :::17480

Ncat: Listening on 0.0.0.0:17480

Ncat: Connection from 192.168.0.97.

Ncat: Connection from 192.168.0.97:39156.
在Server2节点上发起网络I/O请求:

[root@server2 ~]# time dd if=/dev/zero | nc -v -n 192.168.0.99 17480

Ncat: Version 6.40 ( http://nmap.org/ncat )

Ncat: Connected to 192.168.0.99:17480.

^C记录了34434250+0 的读入

记录了34434249+0 的写出

17630335488字节(18 GB)已复制,112.903 秒,156 MB/秒

real 1m52.906s

user 1m23.308s

sys 2m22.487s
总结:
当然,测试磁盘I/O使用fio工具更好,因为fio支持多种ioengine(rdma/libaio/librbd/libhdfs等)和指定多线程/进程并发数等,另外,测试结果显示的性能更全面(磁盘延迟clat/磁盘利用率util等)。参考:linux 磁盘IO测试工具:FIO (简要介绍iostat工具)
————————————————
版权声明:本文为CSDN博主「Yannick_J」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/don_chiang709/article/details/91411301

相关文章

  • dd命令使用

    dd命令 dd :convert and copy a file用法: dd if=/PATH/FROM/SRC ...

  • dd命令

    一、dd命令的解释dd命令主要是用来块拷贝一个指定大小的文件,并在拷贝的同时进行指定的转换。 注意:指定数字的地方...

  • 创建虚拟磁盘

    1.1 dd 命令简介(部分说明来自dd (Unix) wiki) dd命令用于转换和复制文件,不过它的复制不同于...

  • 加入邪教Archlinux

    1.引导 与U盘制作: linux系统下, dd命令:dd if=/dev/zero of=dd.dd win...

  • LINUX 下刻录iso到u盘

    打开终端,使用dd命令,格式如下:sudo dd if=xxx.iso of=/dev/sdb命令中xxx.iso...

  • dd 命令详解

    dd 命令用于复制文件并对原文件的内容进行转换和格式化处理。 语法 实例 生成一个100M的空镜像文件: 将本地的...

  • Linux dd命令

    dd命令可以轻易实现创建指定大小的文件,如dd if=/dev/zero of=test bs=1M count=...

  • dd命令妙用

    [toc] dd命令详解 参数含义if=文件名指定输入文件名,缺省为标准输入。< if=input file >o...

  • dd命令详解

    一、dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 注意:指定数字的地方若以下列...

  • LINUX dd命令

    用法:dd [操作数] ...或:dd 选项Copy a file, converting and formatt...

网友评论

      本文标题:dd命令

      本文链接:https://www.haomeiwen.com/subject/kwzcertx.html