话说,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. php IE中文乱码

    echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); 详细出处参考:http://ww ...

  2. Selenium RemoteWebDriver 利用CDP修改User-Agent

    地球人都知道,如果使用selenium时要修改user-agent可以在启动浏览器时添加配置项,如chromeOptions.addArguments("user-agent=xxx&quo ...

  3. poj2823单调队列认知

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 62930   Accepted: 17963 ...

  4. 一文读懂Java注解

    什么是注解 Java官方文档上说,注解是元数据的一种形式,它提供不属于程序一部分的数据,注解对被注解的代码没有直接的影响. 准确上说,注解只不过是一种特殊的注释而已,如果没有解析它的代码,它可能连注释 ...

  5. 模板:list列表显示

    作为视图,担当的角色就是显示数据.所以关键就是,借助JSTL的c:forEach标签遍历从CategoryServlet的list()的request.setAttribute("thecs ...

  6. JAVA ArrayList集合基础

    java集合的使用方法 一,集合ArrayList的定义方式    ArrayLsit<数据类型> 变量名=new ArrayList<数据类型>(); 二,集合的操作和概念  ...

  7. Oracle 中同义词使用

    一.数据库对象: 模式对象: 数据库对象是逻辑结构的集合,最基本的数据库对象是表; 其他对象包括:create增.drop删.改alter 同义词.序列.视图.索引 1.同义词: ①. 现有对象的一个 ...

  8. npm执行清理缓存失败npm cache clean

    C:\Users\you name>npm cache cleannpm ERR! As of npm@5, the npm cache self-heals from corruption i ...

  9. oracle 11g 用户名和密码默认区分大小写

    oracle 11g 用户名和密码默认区分大小写,可更改alter system set sec_case_sensitive_logon=false 设置改为不区分大小写.

  10. 【Copy攻城狮日志】docker搭建jenkins拉取svn代码打包vue项目部署到nginx

    ↑开局一张图,故事全靠编↑ 前言 打开搜索引擎输入『Copy攻城狮』,发现最新的一条记录已经是去年的4月,意味着我又有一年时间没有再总结成长了.习惯了“温水煮青蛙”的日子,无论是经验水平还是薪资收入, ...