dd命令的简单学习
dd命令简介
dd
Copy a file, converting and formatting according to the operands.
dd 可以理解为是 disk dump 磁盘转储的含义
他不仅仅可以用于测试磁盘的简要读写速度
还可以进行文件备份转储等.
命令介绍
time dd if=/dev/zero of=test bs=8k count=20k oflag=dsync oflag=dsync
time dd if=test of=/dev/null bs=8k oflag=dsync
time dd if=test of=/var/test bs=64k oflag=dsync
time有计时作用,dd用于复制,从if读出,写到of;
if=/dev/zero不产生IO,因此可以用来测试纯写速度;
同理of=/dev/null不产生IO,可以用来测试纯读速度;
将当前目录下面的test拷贝到/var则同时测试了读写速度;
bs是每次读或写的大小,即一个块的大小,count是读写块的数量
oflag=dsync
参数说明
flag 相关参数
append 追加模式(仅对输出有意义;隐含了conv=notrunc)
direct 使用直接I/O 存取模式
directory 除非是目录,否则 directory 失败
dsync 使用同步I/O 存取模式
sync 与上者类似,但同时也对元数据生效
fullblock 为输入积累完整块(仅iflag)
nonblock 使用无阻塞I/O 存取模式
noatime 不更新存取时间
nocache Request to drop cache. See also oflag=sync
noctty 不根据文件指派控制终端
nofollow 不跟随链接文件
count_bytes treat 'count=N' as a byte count (iflag only)
skip_bytes treat 'skip=N' as a byte count (iflag only)
seek_bytes treat 'seek=N' as a byte count (oflag only)
dd其他功能介绍
dd if=/dev/hdx of=/dev/hdy
将本地的/dev/hdx整盘备份到/dev/hdy
dd if=/dev/hdx of=/path/to/image
将/dev/hdx全盘数据备份到指定路径的image文件
dd if=/dev/hdx | gzip >/path/to/image.gz
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径恢复:
dd if=/path/to/image of=/dev/hdx
将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/hdx
将压缩的备份文件恢复到指定盘
dd if=/dev/hdx of=/path/to/image count=1 bs=512
备份磁盘开始的512Byte大小的MBR信息到指定文件恢复:
dd if=/path/to/image of=/dev/hdx
将备份的MBR信息写到磁盘开始部分
dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件
!!!!慎用
dd if=/dev/urandom of=/dev/hda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。
From: http://blog.chinaunix.net/uid-11728685-id-5825650.html
建议使用fio进行相关IO测试
- 不建议使用dd进行性能测试的原因
1. dd命令的IO模型单一,只能测试顺序IO,不能测试随机IO。
2. dd命令可设置的参数较少,并且测试结果不一定能反映出磁盘的真实性能。
3. dd命令的设计初衷就不是用例测试性能的,在dd的手册中可以看到。
4. 无法设置队列深度,因此不推荐用dd命令来测试最大读IOPS。
- fio的部分相关参数
常用参数:
filename: 指定文件(设备)的名称,可以通过冒号分割同时指定多个文件,如filename=/dev/sda:/dev/sdb。这个测试时直接写裸设备,有可能写坏文件系统。
directory: 设置filename的路径前缀,在后面的基准测试中,采用这种方式来指定设备。
name: 指定job的名字,在命令行中表示新启动一个job。
direct: bool类型,如果设置成true (1),表示不使用系统的 io buffer。
thread 使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试
ioengine: I/O引擎,现在fio支持19种ioengine。默认值是sync同步阻塞I/O,libaio是Linux的native异步I/O。
iodepth: 如果ioengine采用异步方式,该参数表示一批提交保持的io单元数。该参数可参考文章“Fio压测工具和io队列深度理解和误区”。
rw: I/O模式,可选 randread,randwrite,randrw
bs: I/O block大小,默认是4k。
size: 指定job处理的文件的大小。
numjobs: 指定job的克隆数(线程)。
time_based: 如果在runtime指定的时间还没到时文件就被读写完成,将继续重复知道runtime时间结束。
runtime: 指定在多少秒后停止进程。如果未指定该参数,fio将执行至指定的文件读写完全完成。
group_reporting: 当同时指定了numjobs了时,输出结果按组显示。
Study:https://www.jianshu.com/p/23a956e09b1c
fio的样例
fio -name=8k -filename=/var/io.speedtest -runtime=30 -direct=1 -bs=8k -rw=randread -rwmixread=70 -ioengine=sync -size=4G -numjobs=50 -thread -group_reporting >randread8k_70.txt
# 参数解释
filename 文件位置以及名字,可以指定不同的分区进行验证
runtime 执行时间,避免测试过久,影响生产
direct=1 不使用缓存 直接走内存.
bs 指定块大小
rw 指定测试类型
rwmixread 混写读写中的读比率. 数据库一般读多写少
size指定文件大小, 避免过大.
numjobs 测试的线程数, 不建议超过CPU的核心数
-thread 不适用fork的方式进行创建, 提高测试速度
gourp_reporting 汇总测试结果.
番外: Raid的写惩罚
| Raid级别 | 写惩罚 |
|---|---|
| 0 | 1 |
| 1 | 2 |
| 5 | 4 |
| 6 | 6 |
| 10 | 2 |
RAID-0:
直接的条带,数据每次写入对应物理磁盘上的一次写入
RAID-1和10:
RAID-1 和RAID-10的写惩罚很简单理解,因为数据的镜像存在的,所以一次写入会有两次。
RAID-5:
RAID-5由于要计算校验位的机制存在,
需要读数据、读校验位、写数据、写校验位四个步骤,所以RAID-5的写惩罚值是4。
RAID-6:RAID-6由于有两个校验位的存在,与RAID-5相比,
需要读取两次校验位和写入两次校验位,所以RAID-6的写惩罚值是6。
dd命令的简单学习的更多相关文章
- 支持 dd 命令的简单的 GUI 实用程序
Kindd-支持 dd 命令的简单的 GUI 实用程序 "Kindd",一个属于dd 命令的图形化前端.它是自由开源的.用 Qt Quick 所写的工具.总的来说,这个工具对那些对 ...
- java 命令对象简单学习实现:
命令模式:首先我们要知道命令模式的基本定义:来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化.用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化.分离变化 ...
- dd命令简单易用,例如
dd命令简单易用,例如 bs单位,count为写入的范围区间,例如以下举例: 例:使用dd清除vote disk和ocr(裸设备) $dd if=/dev/zero of=/dev/rrac_ocr ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- Shell学习(八)——dd命令
一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...
- [转]dd命令、cp命令详解+dd命令、cp命令对比 ---delong
出处:http://blog.csdn.net/sun_app/article/details/18263299 1.dd命令详解 1)中文man手册dd的解释 NAME dd - 转换和 ...
- (6)dd命令安装Linux
1.面对大批量服务器的安装,人们往往热衷于选择"无人值守安装"的方式,而此方式需要对服务器进行过多的配置,并不适合初学者. 无人值守安装(Kickstart),又称全自动安装,其工 ...
- 使用dd命令备份Linux分区
为了备份分区,开始使用的是Remastersys,但最终生成的iso文件仅有几十K,应该是软件bug,且此软件不再更新,后尝试使用Linux Respin,但github一直连接不上. 其实可以尝试使 ...
- linux dd命令详解
Linux-dd命令详解 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 名称: dd 使用权限: 所有使用者dd 这个指令在 ...
- 使用dd命令克隆整个系统(转)
神奇的ghost的原理是什么呢?不就是数据复制吗?Linux下的dd命令不就是最强大的数据复制工具! 既然如此,我为什么要使用g4l这样复杂的工具呢?一条dd命令不就可以帮我实现任意 ...
随机推荐
- 4大焕新,华为云CCE带你感受容器化上云体验
本文分享自华为云社区<华为云CCE邀您共同打造最佳容器化上云体验>,作者:云容器大未来 . 在容器化日益成为中大型企业上云主流选择的情况下,容器服务如何能帮助用户更简单快捷的上云.高效可信 ...
- 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
摘要:用实践案例带你掌握云连接CC如何实现跨区域多VPC与线下IDC Server互联. [背景] 当前在华为云华南.华东.香港region均部署了业务,同时在华南region通过云专线与线下IDC打 ...
- 云图说丨初识云应用引擎CAE
摘要:开发运营一个应用软件,面临种种挑战:软件栈厚重.开发上线慢.资源易浪费.运维投入高.突发流量应对困难. 华为云应用引擎CAE面对挑战,一扫而光!! 本文分享自华为云社区<[云图说] | 第 ...
- 火山引擎智能外呼联合火山引擎VeDI升级服务,让企业精准营销不再难
企业营销模式正在经历一场巨变.数字化营销早已替代传统的营销方式,成为企业营销的主流方式和发展战略中不可或缺的部分.然而随着数字化营销的普及,市场迈入存量竞争时代,获客成本也逐年攀升.面对营销过程中不断 ...
- Kubernetes(K8S) 安装 Metrics-Server kubectl top (metrics-server) node NotFound
kubectl top (metrics-server) node NotFound components.yaml 网上的各种方法都有问题,找到了一个完整版的 yaml apiVersion: v1 ...
- python虚拟环境venv
Python3虚拟环境是为了在开发过程中隔离项目所需的 Python 环境.虚拟环境允许我们在同一台计算机上的不同项目中使用不同的 Python 版本和软件包,而不会相互干扰 首先创建一个虚拟环境的工 ...
- Bert不完全手册4. 绕开BERT的MASK策略?XLNET & ELECTRA
基于随机token MASK是Bert能实现双向上下文信息编码的核心.但是MASK策略本身存在一些问题 MASK的不一致性:MASK只在预训练任务中存在,在微调中不存在,Bert只是通过替换部分的随机 ...
- 【django-Vue】项目day01 pip永久换源 虚拟环境搭建 项目前后端创建 项目目录调整
目录 昨日回顾 1 企业项目类型 2 企业项目开发流程 3 路飞项目需求 4 pip永久换源 5 虚拟环境搭建 5.1 使用pycharm创建虚拟环境 5.2 通用方案创建虚拟环境 6 luffy项目 ...
- 机器学习 | 分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
本篇博客的图源来自 zhwhong,转载仅作学习使用! 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例.实际上,这样的度量错误掩盖了样例如何 ...
- luoguP1419 寻找段落(二分答案+单调队列)单调队列DP求在区间[l,r] 中长度至少为 m 的最大平均值
模板:单调队列DP求在区间\([l,r]\) 中长度至少为 \(m\) 的最大平均值 题目链接:Here 题意 给定一个长度为 \(n\) 的序列 \(a_1\) ~ \(a_n\) ,从中选取一段长 ...