内核参数 linux dd,Linux dd 命令详解(测磁盘的吞吐量)

一、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是读写块的数量。

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

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

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

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

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

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

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

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

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

fdatasync  完成dd命令前,写文件数据到磁盘

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

9. 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工具)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值