[转帖]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 ...
随机推荐
- Docker、pre-commit 导致的 git commit 报错:找不到 python 3.8
到这个问题的原因可能有很多,这里只是记录下针对我遇到这这跟题的原因及解决方法 问题描述 执行 git commit 命令,报错 /usr/bin/env: 'python3.8': No such f ...
- 光大银行刘淼:基于华为云GaussDB(DWS) 数据仓库创新实践
摘要:面向未来数据平台3.0要做架构减法,平台由N->1,华为云GaussDB(DWS)未来作为数据仓库唯一平台,数据链路实现从数据湖直接到华为云GaussDB(DWS)数据仓库. 日前,华为举 ...
- 云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维
摘要:数据库智能运维(DMS)是GaussDB(DWS) 为客户数据库快速.稳定运行提供保驾护航的能力,对业务数据库所使用磁盘.网络.OS指标数据,集群运行关键性能指标进行收集.监控.分析.通过综合收 ...
- 教你如何在Spark Scala/Java应用中调用Python脚本
摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...
- SparkSQL高并发:读取存储数据库
摘要:实践解析如何利用SarkSQL高并发进行读取数据库和存储数据到数据库. 本文分享自华为云社区<SarkSQL高并发读取数据库和存储数据到数据库>,作者:Copy工程师 . 1. Sp ...
- 用 docker 部署 folkmq 消息中间件
docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.0.19
- .Net Core 跨域
Startup.cs public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseCorsMidd ...
- Bug生命周期
新建,确认,解决,重新验证,关闭,重新打开 一个Bug由测试人员发现并提交,我们将状态标注为新建:开发人员接收了该Bug,将Bug的状态修改为已分配,表示已经认可:开发人员解决了该bug后,就将bug ...
- leaflet marker 旋转
leaflet.markerRotation.js 代码(这段代码是从插件 leaflet.polylineDecorator.js 中复制的): // leaflet 实现 marker 旋转 (f ...
- HDU-3032--Nim or not Nim?(博弈+SG打表)
题目分析: 这是一个经典的Multi-SG游戏的问题. 相较于普通的Nim游戏,该游戏仅仅是多了拆成两堆这样的一个状态.即多了一个SG(x+y)的过程. 而根据SG定理,SG(x+y)这个游戏的结果可 ...