话说,Linux 自带的dd工具测试硬盘读写速度只能提供一个大概的测试结果,而且是连续IO 而不是随机IO ,理论上文件规模越大,测试结果越准确。理论上bs越大,所测得性能越高。

上句来自网上,是不是真的呢?百闻不如一间。今天来进行实际的测试和对比。

找了一台没有硬盘的机器,再找了一块希捷7200rpm 3T的硬盘。一块硬盘只能做raid0,条带设置为256K。 敲入lsblk命令如下。

一、格式化前对新加的盘进行测试

1. 读测试

2. 写测试

3. 在测试完下面的2.5后,再返回来测试该磁盘的写

可以看出,这三种差别不大。但是和上面一步相差很大!都快成倍数关系了。

4. 怀着忐忑的心情,再次测试了下 oflag=dsync参数。结果很快,没有想象的那么慢,将近10秒,虽然比上面大了不少。当然速度也慢了不少!

5. 上面的写速度相差比较大,所以再次测试了读速度。总量没变,还是1G的数据,只是改变了块大小,发现速度截然不同!块变小,速度变大,大很多!

估计是因为没有文件系统。

二、对系统盘的目录/mnt/disk1进行测试

1. 在home目录下操作失败了

2. of 必须指定文件,存不存在没关系。应该是sda盘已经格式化了文件系统有关。

3. 把参数改为oflag=dsync,半天还没结束!

过了很久几次查看没动静,约一小时后,再开了个shell 进来看,文件变成了4G多点!不应该是1G?

4. 先ctrl+c退出原理的shell再测试下,不带后面的参数,再加上时间time的命令。比第二步(2.2)的速度稍有提高。

5. 反复三种方式测试了一下

速度基本上比较稳定。没有加参数速度稍微快一点点,而加参数conv=fdatasync 或者 fsync这两种没区别。

而oflag=dsync后续再测。

6. 从1.5返回测试不同的块大小。时间和速度变化不大,和上面(2.5)对比变化也很小,证明开始推断是正确的。所以文件系统必须要安装!

7. 介于上面oflag=dsync的结果,我们再测试一下。

上面又卡主了,约五分钟后,我新开了一个shell窗口,连续两次查1.img的大小,已经都4G了,还在增大。所以上面的shell窗口ctrl+c果断推出。

到这里为止,我们可以得出一些结论。

1.oflag=dsync是对物理数据(磁盘)的缓冲,不经过文件系统。而conv=fdatasync 或者conv=fsync是对文件系统的缓冲,其实字面f就是文件file;而前者data表示只缓存数据,后者数据和元数据都缓存。所以一般情况下都是安装了文件系统的,所以应选文件系统的参数,也可以默认不选择,差别不大。

2.bs块大小在有文件系统的情况下,其值变化应该没多大影响,当然一般最好是4k的倍数。而对物理裸盘的测试,bs应该取4k,变大,性能反而下降。应该是OS的block默认是4k。

当然只是目前测试的结果,可能还不够充分,后续有机会再完善,有问题也欢迎提出。

另,有关文件IO知识可以参考https://www.cnblogs.com/orange-CC/articles/12671487.html,来自本人博客;还有更多文件系统和内存管理的知识欢迎阅读!

Linux dd工具磁盘读写测试分析的更多相关文章

  1. 【Linux】磁盘读写 测试

    一.如何查看当前磁盘的IO使用情况 使用命令:iotop Total DISK READ: 3.89 K/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DI ...

  2. DD测磁盘读写性能

    1.测试磁盘的纯写入性能 dd if=/dev/zero of=/file [oracle@11g ~]$ touch ddTest[oracle@11g ~]$ time dd if=/dev/ze ...

  3. linux dd实现磁盘完整全盘镜像备份backup,恢复recover(restore)

    1,dd操作就是简单的按字节复制,什么分区表啊,MBR(master boot record)啊统统照搬; 1. 磁盘克隆 也就是把整个硬盘复制一份.当然你首先需要在计算机上在接上一块新硬盘,并让系统 ...

  4. 嵌入式Linux截图工具gsnap移植与分析【转】

    转自:http://blog.csdn.net/lu_embedded/article/details/53934184 版权声明:开心源自分享,快乐源于生活 —— 分享技术,传递快乐.转载文章请注明 ...

  5. Linux文本工具-cat-cut-paste;文本分析-sort-wc-uniq

    1.1 查看文本文件内容  cat 1.1.1 cat可以查看文本内容 cat [OPTION]... [FILE]... 常见选项 -E: 显示行结束符$ -A: 显示所有控制符 -n: 对显示出的 ...

  6. linux 磁盘IO测试工具:FIO (同时简要介绍dd工具测试)

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. 目前主流的第三方IO测试工具有fio.iomete ...

  7. Linux 下测试磁盘读写 I/O 速度的方法汇总

    在分布式异构存储系统中,我们经常会需要测量获取不同节点中硬盘/磁盘的读写 I/O 速度,下面是 Linux 系统下一些常用测试方法(之后不定期更新): 1.使用 hdparm 命令这是一个是用来获取A ...

  8. sar命令,linux中最为全面的性能分析工具之一

    sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工具将对系统当前的状态就行取样,然后通 ...

  9. linux 磁盘读写性能测试

    1. 测试读取速度 haparm -Tt /dev/xxx 1.1 获取硬盘设备名称: fdisk -l Disk /dev/xvdf: 365.0 GB, 365041287168 bytes 25 ...

随机推荐

  1. flask之CORS跨域请求处理

    from flask import Flask from flask_cors import CORS#pip install Flask-CORS#跨域请求模块 app = Flask(__name ...

  2. iframe中有ajax,设置iframe自适应高度

    ------------------------------------------------------------------- http://www.jb51.net/article/1578 ...

  3. SPL基础接口

    Iterator 迭代器接口 SPL规定,所有实现了Iterator接口的class,都可以用在foreach Loop中.Iterator接口中包含5个必须实现的方法: interface Iter ...

  4. 不懂代码?没关系,照样可以做SaaS软件开发

    众所周知,一家标准化的企业的日常运营管理都需要一个强大的中枢或中台管理系统来统筹整个企业或是整个集团的运作,这个强大的中台管理系统就相当于是企业的引擎.在引擎的带动下,汽车可以快速的飞驰起来,同样,在 ...

  5. 使用Docker发布blazor wasm

    Blazor编译后的文件是静态文件,所以我们只需要一个支持静态页面的web server即可. 根据不同项目,会用不同的容器编排,本文已无网关的情况下为例,一步一步展示如何打包进docker 需求 H ...

  6. vc程序设计--对键盘与鼠标的响应(1)

    // WindowsProject2.cpp : 定义应用程序的入口点. // /** * 当按下CTRL键时输出信息:CTRL键被压下 * 当按下K键时输出信息:K键被压下 * 当按下CTRL+K键 ...

  7. Rocket - debug - TLDebugModuleInner - Program Buffer Access

    https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...

  8. Vuex原理实现

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 思考问题 Vuex 只在更实例引入了,那么 ...

  9. MD5安全吗?

    MD5的破解方法目前分为两类:一类为彩虹表破解:一类为专业的MD5破解站点. 1.彩虹表 彩虹表是一个庞大的.针对各种可能的字母组合预先计算好的哈希值的集合.彩虹表不仅针对MD5算法,主流的算法都有对 ...

  10. 【HBase】知识小结+HMaster选举、故障恢复、读写流程

    1:什么是HBase HBase是一个高可靠性,高性能,面向列,可伸缩的分布式数据库,提供海量数据存储功能,一个结构化的分布式存储系统,不同于一般的关系型数据库,它适合半结构化和非结构化数据存储. 2 ...