[转帖]dd - Linux世界中的搬运工
《存储工具系列文章》主要介绍存储相关的测试和调试工具,包括不限于dd、fio、vdbench、iozone、iometer、cosbench等性能负载工具,及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)测试纯写入性能
-
[root@RedHat home]# dd if=/dev/zero of=test bs=8k count=10000 oflag=direct
-
10000+0 records in
-
10000+0 records out
-
81920000 bytes (82 MB) copied, 3.9123 s, 20.9 MB/s
结果为20.9 MB/s。
(1)测试纯读取性能
-
[root@RedHat home]# dd if=test of=/dev/null bs=8k count=10000 iflag=direct
-
10000+0 records in
-
10000+0 records out
-
81920000 bytes (82 MB) copied, 0.424138 s, 193 MB/s
结果为193 MB/s。
[转帖]dd - Linux世界中的搬运工的更多相关文章
- [转帖]Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压
Linux操作系统中,*.zip.*.tar.*.tar.gz.*.tar.bz2.*.tar.xz.*.jar.*.7z等格式的压缩与解压 https://blog.csdn.net/gatieme ...
- [转帖]Linux命令中特殊符号
Linux命令中特殊符号 转自:http://blog.chinaunix.net/uid-16946891-id-5088144.html 在shell中常用的特殊符号罗列如下:# ; ;; . ...
- [转帖]Linux shell中2>&1的含义解释 (全网最全,看完就懂)
Linux shell中2>&1的含义解释 (全网最全,看完就懂) https://blog.csdn.net/zhaominpro/article/details/82630528 ...
- Linux系统中的vi/vim指令【详解】
vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称.几乎可以说任何一台Unix机器都会提供这套软件. 只要简单的在Shell下执行vi就可以进入 vi 的 ...
- Linux内存中的Cache真的能被回收么?
在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: [root@tencent64 ~]# free ...
- Linux内核中流量控制
linux内核中提供了流量控制的相关处理功能,相关代码在net/sched目录下:而应用层上的控制是通过iproute2软件包中的tc来实现, tc和sched的关系就好象iptables和netfi ...
- linux学习过程中所需要看的一些书籍
入门类 一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用.鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这 ...
- 调皮的程序员:Linux之父雕刻在Linux内核中的故事
本文内容由公众号“格友”原创分享. 1.引言 (不羁的大神,连竖中指都这么帅) 因为LINUX操作系统的流行,Linus 已经成为地球人都知道的名人.虽然大家可能都听过钱钟书先生的名言:“假如你吃 ...
- [转帖]dd命令详解
dd命令详解 https://czmmiao.iteye.com/blog/1748748 之前一直对linux的命令很恐惧 现在发现 其实不是那么复杂 要仔细学习就可以了 比如 dd = disk ...
- 【转帖】Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo
Linux发行版:CentOS.Ubuntu.RedHat.Android.Tizen.MeeGo作者:阳光岛主 原文在这儿 Linux,最早由Linus Benedict Torvalds在199 ...
随机推荐
- 十分钟从入门到精通(上)——OBS权限配置
[摘要]作为公有云的数据底座,大量的应用场景产生的数据都会存储到OBS对象存储服务中,如直播.电商.大数据可视化.机器学习.物联网等.作为公有云的海量存储基础服务, OBS提供了灵活的权限配置功能,解 ...
- Spark-submit执行流程,了解一下
摘要:本文主要是通过Spark代码走读来了解spark-submit的流程. 1.任务命令提交 我们在进行Spark任务提交时,会使用"spark-submit -class .....&q ...
- GaussDB(DWS)迁移:一种执行高效的TereData的marco迁移方案
摘要:提供一种执行高效的TereData的marco迁移方案. 本文分享自华为云社区<GaussDB(DWS)迁移 - teredata兼容 -- macro兼容 # [玩转PB级数仓Gauss ...
- 知道Python中的字符串是什么吗?
摘要:本文将告诉您Python中的字符串是什么,并向您简要介绍有关该概念的所有知识. 本文将介绍以下内容: 如何创建一个字符串? 如何从字符串访问字符? 格式化字符串 因此,让我们开始吧. 什么是Py ...
- 华为云UGO:醒醒!你的异构数据库迁移难题有救了
摘要:华为云推出的数据库和应用迁移 UGO,正是一款专注于异构数据库结构迁移和应用SQL转换的专业云服务. 数字化时代下,上云已成为企业管理者的基本共识,随着技术日新月异,上云也变得轻松简单起来,但异 ...
- 云小课 | 华为云KYON之VPC终端节点
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:在华为云KYON( ...
- HeaderMap Method has too many Body parameters
在 Feign 方法里面添加 Header 报 Method has too many Body parameters @PostMapping(value = "/sendsms" ...
- Runnable接口的 run() 方法和start()方法
1.start()方法来启动线程,真正实现了多线程运行.这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码:通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就 ...
- WebService rwsp:NoRunningCommunicationPointAvailable
SoapUI 调WebService 报 No running communication point is configured to process this request. 错误 检查入参是否 ...
- 机器学习的线性代数(Python 版)
线性代数是数学的分支学科,涉及矢量.矩阵和线性变换.它是机器学习的重要基础,从描述算法操作的符号到代码中算法的实现,都属于该学科的研究范围. 虽然线性代数是机器学习领域不可或缺的一部分,但二者的紧密关 ...