在Linux系统中经常会使用dd命令来测试硬盘的写入速度,命令会涉及几个常用参数:sync、dsync、fsync与fdatasync

# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 oflag=dsync

# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 oflag=sync

# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 conv=fsync

# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 conv=fdatasync

上面4个命令都是往硬盘中写入1G的数据,只是oflag=dsync和oflag=sync这两个的速度慢的要命。

dd --help中对各参数作用描述如下:  

Each FLAG symbol may be:

dsync           use synchronized I/O for data   // 对应oflag=dsync

sync             likewise, but also for metadata  // 对应oflag=sync

Each CONV symbol may be:

fdatasync     physically write output file data before finishing  // 对应conv=fdatasync

fsync            likewise, but also write metadata                       // 对应conv=fsync

区别:
使用dsync/sync,dd会从/dev/zero中,每次读取4Kbytes数据,然后直接写入到硬盘当中,重复此步骤,直到共读取并且写入了1G的数据。
使用fdatasync/fsync,dd会从/dev/zero中一次性读取1G的数据,写入到磁盘的缓存中,然后再从磁盘缓存中读取,一次性写入到硬盘当中。

/dev/在内存当中,和缓存一样,读取速度都非常快,因此两种方式最终的读取速度对最终的写入速度无任何影响。 换种说法,就是此处不管有没有的硬盘缓存,对IO都不产生任何影响。那也就是说,两种方式的主要差异就在于多步与一步。

dsync/sync是一次写一个bs大小的数据,同步写到磁盘后再继续写下一个IO;

fdatasync/fsync是每次写一个bs大小数据到磁盘缓存,dd命令结束前一次性将数据刷入磁盘中,因此IOPS比dsync/sync方式要高的多。

因此可以推断,使用dsync,以1G为blocksize,次数为一的方式往硬盘中写入1 Gbytes的数据,结果将不会与dd if=/dev/zero of=/tmp/1Gbytes bs=4k count=256000 conv=fdatasync有太大的差距。

CONV标识其他参数含义:

1. conv=notrunc,do not truncate the output file

2. conv=nocreat, do not create the output file

3. conv=excl,      fail if the output file already exists

FLAG标识其他参数含义:

1. oflag=direct, use direct I/O for data

2. oflag=nonblock, use non-blocking I/O

3. oflag=noatime, do not update access time

dd命令中dsync和fsync区别相关推荐

  1. cts测试linux指令skip,linux – dd命令中seek和skip之间有什么区别?

    我试图从磁盘读取并希望dd命令随机发出每个请求并检查磁盘的延迟以进行读取操作我已经使用了搜索和跳过两者都可以吗? dd if=/dev/rdsk/c2t5000CCA0284F36A4d0 skip= ...

  2. Linux命令中的$()和${}的区别

    文章目录 $() ${} $() $() 小括号里面是 Linux 命令,作用就是执行里面的命令后返回执行的结果:和 ``(反引号)作用一样. $() 与 ``(反引号)都是用来作命令替换的.命令替换 ...

  3. linux中dd命令详解,Linux dd命令详解

    Linux 操作系统管理员的最主要的工作就是保证 Linux 系统在工作期间能够正常的运行.但是要做到这样,并不是那么容易,因为 Linux 系统的运行环境十分复杂,会有很多因素导致 Linux 系统 ...

  4. dd命令安装Linux

    面对大批量服务器的安装,人们往往热衷于选择"无人值守安装"的方式,而此方式需要对服务器进行过多的配置,并不适合初学者. 无人值守安装(Kickstart),又称全自动安装,其工作原 ...

  5. dd命令安装Linux安装教程详细步骤

    面对大批量服务器的安装,人们往往热衷于选择"无人值守安装"的方式,而此方式需要对服务器进行过多的配置,并不适合初学者. 无人值守安装(Kickstart),又称全自动安装,其工作原 ...

  6. linux ghost功能,在linux上用dd命令实现ghost功能(示例代码)

    转自:http://blog.jobbole.com/90978/ ghost和g4l 安装操作系统,速度太慢,整个过程太冗长乏味了. 安装过程中,需要回答若干问题,系统需要安装无数个软件,创建和写入 ...

  7. linux 下的dd,Linux中的dd命令

    一.dd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 使用方法:dd [OPERAND] 参数注释:bs=BYTES        read and write BYTES byte ...

  8. linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令

    ifeq语法是ifeq ";" ";"  ,功能是比较参数"arg1"和"arg2"的值是否相同,相同时为1 ifneq ...

  9. linux中dd命令增加内存使用率,Linux 下使用 dd 命令进行硬盘 I/O 性能检测

    如何使用dd命令测试我的硬盘性能?如何在linux操作系统下检测硬盘的读写速度? 你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试. dd命令 :它被用来在Linux和 ...

最新文章

  1. BAT、讯飞之后,又一国家人工智能开放创新平台诞生了
  2. mysql分区有好处吗_mysql 分区有实用价值吗?
  3. 许昌:让便捷支付成为智慧城市新名片
  4. 【微服务学习】Polly:熔断降级组件
  5. XCode10 swift4.2 适配遇到的坑
  6. anaconda pip 命令报错
  7. android 点击,触摸事件
  8. 【软件工程】山东大学软件工程复习提纲
  9. h5 a标签下载链接下载文件
  10. 网页如何开启Gzip压缩
  11. 计算机管理用户拒绝访问,win10系统管理员账户拒绝访问怎么办
  12. php程序员 好书,PHP程序员要看的书单
  13. bom event周期_BOM-event事件
  14. 早餐经常喝大米粥,养胃吗?应该抛弃的三种早餐,很多人却爱吃
  15. 小米 笔记本 Pro 点击excel 文件夹 未响应 卡死 如何解决
  16. 你“剁手”的时候,支付宝在干嘛?
  17. TMB简介(肿瘤突变负荷 tumor mutation burden, 简称TMB)
  18. [置顶]R语言 ggplot2包
  19. 外设篇:SD卡等外存设备
  20. 易飞9.08-9.0.12安装及算号

热门文章

  1. InSAR技术监测大坝形变1——InSAR技术产业的研究背景
  2. 数学小课堂:数学的用途(黄金分割)
  3. Line母公司Naver联手软银成立4300万美元基金
  4. Oracle数据库管理系统的体系结构图解简单说明(一)
  5. timestamp(时间戳)
  6. php无限极递归概念,php无限极分类递归与普通
  7. 2022年T电梯修理考试题库及模拟考试
  8. PLC-串口通信实例
  9. VS+QT鼠标事件的一些补充
  10. 未来数控机床的发展趋势,你怎么看?