[转帖]dd - Linux世界中的搬运工

dd,linux,世界,搬运工 · 浏览次数 : 0

小编点评

**《存储工具系列文章》主要介绍存储相关的测试和调试工具,包括:** | 工具名称 | 功能 | |---|---| | `dd` | 将文件从一个位置复制到另一个位置 | | `fio` | 与 `dd` 相似的工具,但支持更广泛的平台 | | `vdbench` | 性能负载测试工具 | | `iozone` | 与 `dd` 相似的工具,但支持更广泛的平台 | | `iometer` | 与 `dd` 相似的工具,但支持更广泛的平台 | | `cosbench` | 与 `dd` 相似的工具,但支持更广泛的平台 | | `strace` | 追踪系统调用 | | `dd` 参数解析 | 确定文件大小、转换类型、块大小等参数 | | `-help` 参数 | 显示帮助信息 | | `-version` 参数 | 输出版本信息 |

正文

        《存储工具系列文章》主要介绍存储相关的测试和调试工具,包括不限于ddfiovdbenchiozoneiometercosbench等性能负载工具,及strace等调试工具。


       dd,是 device driver 的缩写,它可以称得上是“Linux 世界中的搬运工”,它用来读取设备、文件中的内容,并原封不动地复制到指定位置。

1  dd参数解析

名称:

dd - 用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 

语法:

       dd [OPERAND]

       dd OPTION

解析:

根据operand,拷贝一个文件,并进行转换。

bs=BYTES

      设置一次读写BYTES字节(同ibs,obs);

cbs=BYTES

       一次转换BYTES字节数;

ibs=BYTES

一次读取bytes字节;

obs=BYTES

一次写入bytes字节;

conv=CONV

      将一个文件转换为制定的格,CONV可以为参数见“CONV参数说明”;

count=BLOCKS

只拷贝输入的BLOCKS块;

if=FILE

从文件FILE中读取数据(FILE可以是文件名,也可以是设备名称);

of=FILE

向文件FILE中写入数据(FILE可以是文件名,也可以是设备名称);

seek=BLOCKS

在出文件中,跳过开头的ibs*blocks块;

skip=BLOCKS

在输入文件中,跳过开头的ibs*blocks块;

iflag=FLAGS

      指定读的方式FLAGS,参见“FLAGS参数说明”

oflag=FLAGS

      指定写的方式FLAGS,参见“FLAGS参数说明”;

status=noxfer

suppress transfer statistics

CONV参数说明:

ascii -转换 EBCDIC 为 ASCII。

ebcdic -转换 ASCII 为 EBCDIC。

ibm -转换ASCII 为 alternate EBCDIC.

block -把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

unblock-使每一行的长度都为 cbs ,不足部分用空格填充。

lcase -把大写字符转换为小写字符。

ucase -把小写字符转换为大写字符。

nocreat -不创建心的输出文件

notruncdo -不截短输出文件

swab -交换输入的每对字节。 Unlike the Unix dd, this works when an odd number of bytes are read. If the input file contains an odd number of bytes, the last byte is simply copied (since there is nothing to swap it with).

noerror -出错时不停止。

sync -把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

fdatasync -physically write output file data before finishing

fsync -同上,但也要写元数据

FLAGS参数说明:

append -append  mode  (makes  sense  only  for output; conv=notrunc sug-gested)

direct 读写数据采用直接IO方式;

directory 读写失败除非是directory;

dsync  读写数据采用同步IO;

sync   同上,但是针对是元数据

fullblock 堆积满block(accumulate full blocks of input )(iflag only);

nonblack 读写数据采用非阻塞IO方式

noatime 读写数据不更新访问时间

noctty -do not assign controlling terminal from file

nofollow -do not follow symlinks

OPTION说明:

--help

display this help and exit

--version

output version information and exit

2  测试实例

清单1:

要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:

[root@RedHat home]#dd if =/dev/fd0 of = /tmp/tmpfile

拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令:

[root@RedHat home]# dd if = /tmp/tmpfile of =/dev/fd0

软盘拷贝完成后,应该将临时文件删除:

[root@RedHat home]#rm /tmp/tmpfile

清单2:

    采用dd测试硬盘的读写速度

Ø  可以通过使用dd if=/dev/zero of=/file 来测试磁盘的纯写入性能。

Ø  使用dd if=/file of=/dev/null 来测试磁盘的纯读取性能。

Ø  使用dd if=/file1 of=/file2 来测试磁盘的读写性能

测试硬盘的结果如下:

(1)测试纯写入性能

  1. [root@RedHat home]# dd if=/dev/zero of=test bs=8k count=10000 oflag=direct
  2. 10000+0 records in
  3. 10000+0 records out
  4. 81920000 bytes (82 MB) copied, 3.9123 s, 20.9 MB/s
结果为20.9 MB/s。

(1)测试纯读取性能

  1. [root@RedHat home]# dd if=test of=/dev/null bs=8k count=10000 iflag=direct
  2. 10000+0 records in
  3. 10000+0 records out
  4. 81920000 bytes (82 MB) copied, 0.424138 s, 193 MB/s

 结果为193 MB/s。

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux32557 人正在系统学习中

与[转帖]dd - Linux世界中的搬运工相似的内容:

[转帖]dd - Linux世界中的搬运工

《存储工具系列文章》主要介绍存储相关的测试和调试工具,包括不限于dd、fio、vdbench、iozone、iometer、cosbench等性能负载工具,及strace等调试工具。 dd,是 device driver 的缩写,它可以称得上是“Linux 世界中的搬运工”,它用来读取设备、文件中的

[转帖]perf学习-linux自带性能分析工具

存储技术为满足层出不穷应用的海量数据存储需求,从物理介质到技术架构也同样发生了天翻地覆的变革。无论技术如何更新换代,其目的都是为了更好的提供高性能,高容量,高可用的数据服务。本系列文章会对存储系统的测试和调试工具做一个介绍。 dd - Linux世界中的搬运工 FIO – IO压力测试工具 vdbe

[转帖]dd命令中dsync和fsync区别

在Linux系统中经常会使用dd命令来测试硬盘的写入速度,命令会涉及几个常用参数:sync、dsync、fsync与fdatasync # dd if=/dev/zero of=/tmp/1G bs=4k count=256000 oflag=dsync # dd if=/dev/zero of=/

[转帖]Linux下用dd命令测试硬盘的读写速度

一、测试写速度: time dd if=/dev/zero of=/tmp/test bs=8k count=1000000 测试结果:565 MB/s 二、测试读速度: time dd if=/tmp/test of=/dev/null bs=8k 测试结果:4.7GB/s 三、测试读写速度: t

[转帖]Linux 中用 dd 命令来测试硬盘读写速度

https://www.cnblogs.com/xiexun/p/13935443.html hdparm -T /dev/sdb iostat 磁盘性能监控 由sysstat包提供 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转

[转帖]FIO磁盘性能测试工具

https://www.cnblogs.com/lyhabc/p/16708771.html 简介 一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。 但是用dd命令来测试性能,有如下问题: 1. d

[转帖]FIO磁盘性能测试工具

https://www.cnblogs.com/lyhabc/p/16708771.html 简介 一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。 但是用dd命令来测试性能,有如下问题: 1. d

[转帖]磁盘测试----fio

https://www.bbsmax.com/A/WpdKAgmnJV/ 测试前提 我们在进行测试时,都会分清楚: 测试对象:要区分硬盘、SSD、RAID、SAN、云硬盘等,因为它们有不同的特点 测试指标:IOPS和MBPS(吞吐率),下面会具体阐述 测试工具:Linux下常用Fio、dd工具, W

[转帖]dd命令祥解

http://blog.chinaunix.net/uid-11728685-id-5825650.html 先简要介绍dd的参数,后边通过几个实例介绍dd的应用,参考了其他网友的资料,在此一并感谢 小菜水平有限文中有什么错误请大家指正,关于dd还有什么好的使用方法,可以贴出来,小菜会及时更新 dd

[转帖]DD硬盘性能相关因素

https://www.jianshu.com/p/a15d7a65c876 本文简单介绍下DD测试硬盘性能时,各个因素的影响 首先列出测试结果 image.png oflag分析--/home dd默认测试会使用buffer io,oflag=direct参数则会跳过buffer I/O,因此通常