话说,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. 2.7 Go交叉编译

    Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED= ...

  2. 【Redis】String应用场景

    单值缓存 SET key value GET key 对象缓存 SET user: value(json格式数据) MSET user::name value1 user::balance value ...

  3. 1、JavaScript中的Cookie 用于存储 web 页面的用户信息。

    总结:每个浏览器都有一定数量限制的cookie.每个浏览器中,每一个cookie都有一个path路径,指向请求访问的网页. -------------------------------------- ...

  4. 【python爬虫】解决歌荒,下歌利器

    python下载图片,mp3,想必很多人都早已耳闻,今天给大家来点不一样的, 让你下载高逼格高品质,带进度条,实时显示下载速度 详见源码:https://www.kesci.com/home/proj ...

  5. OpenResty高性能web平台

    openresty高性能web平台安装使用 简介:OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用 ...

  6. SVN强制添加备注

    1.进入仓库project1/hooks目录,找到pre-commit.tmpl文件 cp pre-commit.tmpl pre-commit 2.编辑pre-commit文件, 将: $SVNLO ...

  7. 搭建Istio基础环境

    需求 搭建istio基础环境(基于1.5.1版本) 安装步骤 在安装 Istio 之前,需要一个运行着 Kubernetes 的环境,安装步骤可以参考前面的文章 下载istio,然后解压,然后将 is ...

  8. iOS开发Runtime 方法替换

    通过#import <objc/runtime.h>我们可以找到: /** * Returns a specified instance method for a given class. ...

  9. Spring_管理bean的生命周期

    Spring IOC 容器对 Bean 的生命周期进行管理的过程:通过构造器或工厂方法创建 Bean 实例为 Bean 的属性设置值和对其他 Bean 的引用将 Bean 实例传递给 Bean 后置处 ...

  10. GitHub 热点速览 Vol.22:如何打造超级技术栈

    作者:HelloGitHub-小鱼干 摘要:build-your-own-x,无论是新手还是老手,这都是一个指向标.方向有了,剩下就是时间和实践的事情,收集了大量可用于软件和 Web 开发的 Publ ...