`

正确的使用dd进行磁盘读写速度测试

    博客分类:
  • IO
 
阅读更多

测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件。

测试指令:dd if=/dev/zero of=/data01/test.dbf bs=8k count=200000 conv=fdatasync

----------------------------------------------

 

正确的使用dd进行磁盘读写速度测试
dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,所以可以用来测试硬盘的顺序读写能力。可以写文件,可以写裸设备。


dd语法
---------------------------------------------------------
功能说明:读取,转换并输出数据。
语  法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]
补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。
参  数:
  bs=<字节数>   将ibs( 输入)与obs(输出)设成指定的字节数。
  cbs=<字节数>   转换时,每次只转换指定的字节数。
  conv=<关键字>   指定文件转换的方式。
  count=<区块数>   仅读取指定的区块数。
  ibs=<字节数>   每次读取的字节数。
  if=<文件>   从文件读取。
  obs=<字节数>   每次输出的字节数。
  of=<文件>   输出到文件。
  seek=<区块数>   一开始输出时,跳过指定的区块数。
  skip=<区块数>   一开始读取时,跳过指定的区块数。
  --help   帮助。
  --version   显示版本信息。

dd常用参数详解
---------------------------------------------------------
if=xxx  从xxx读取,如if=/dev/zero,该设备无穷尽地提供0,(不产生读磁盘IO)
of=xxx  向xxx写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件. 所有写入它的内容都会永远丢失. (不产生写磁盘IO)
bs=8k  每次读或写的大小,即一个块的大小。
count=xxx  读写块的总数量。

避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasync
---------------------------------------------------------
关于sync、fsync、fdatasync请参考:http://elf8848.iteye.com/blog/2088986

dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
dd bs=8k count=4k if=/dev/zero of=test.log  默认“写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log conv=sync   “写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log; sync   “写缓存”启作用

dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fsync表示把文件的“数据”和“metadata”都写入磁盘(metadata包括size、访问时间st_atime & st_mtime等等),因为文件的数据和metadata通常存在硬盘的不同地方,因此fsync至少需要两次IO写操作,fsync 与fdatasync相差不大。(重要,最有参考价值)

dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fdatasync表示只把文件的“数据”写入磁盘,fsync 与fdatasync相差不大。(重要,最有参考价值)

dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
加入这个参数后,每次读取8k后就要先把这8k写入磁盘,然后再读取下面一个8k,一共重复4K次。这是最慢的一种方式了。

dd bs=8k count=4k if=/dev/zero of=test
没加关于操作系统“写缓存”的参数,默认“写缓存”启作用。dd先把数据写的操作系统“写缓存”,就完成了写操作。通常称为update的系统守护进程会周期性地(一般每隔30秒)调用sync函数,把“写缓存”中的数据刷入磁盘。因为“写缓存”起作用,你会测试出一个超级快的性能。
如:163840000 bytes (164 MB) copied, 0.742906 seconds, 221 MB/s

dd bs=8k count=4k if=/dev/zero of=test conv=sync 
conv=sync参数明确“写缓存”启作用,默认值就是conv=sync

dd bs=8k count=4k if=/dev/zero of=test; sync
与第1个完全一样,分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。


裸设备测试
----------------------
1、裸设备到文件系统
dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841
2、文件系统到裸设备
dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8
更多关于裸设备,请参考:http://czmmiao.iteye.com/blog/1748748

分享到:
评论

相关推荐

    linux下测试磁盘io性能工具

    通过特定的参数,如`dd if=/dev/zero of=test bs=1M count=1024 conv=fdatasync`,可以用来测试磁盘的连续读写速度。 4. **fio (Flexible I/O Tester)**:这是一款强大的I/O性能测试工具,支持多种工作负载模型,...

    存储系统和磁盘压力测试工具操作指导

    - 测试磁盘读写速度 - 简单易用 #### SQLIO SQLIO是一款专门针对SQL Server I/O活动类型的存储压力测试软件。它可以模拟微软SQL Server数据库如何访问磁盘子系统,主要用于Windows平台。SQLIO能够帮助用户评估...

    dd命令详解和使用方法

    12. 测试硬盘的读写速度:`dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file` 和 `dd if=/root/1Gb.file bs=64k | dd of=/dev/null` dd 命令是一个功能强大且灵活的数据复制命令,能够满足各种数据复制和...

    linuxdd命令备份与恢复.pdf

    注意,使用dd命令进行备份时,需要确保目标磁盘有足够的空间来容纳原始磁盘的所有数据。 2. 将/dev/hdb全盘数据备份到指定路径的image文件 dd if=/dev/hdb of=/root/image 这条命令将/dev/hdb磁盘的所有数据备份...

    dd指令使用

    11. **测试硬盘读写速度**: 测试硬盘的读写速度。 ```bash # dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file # dd if=/root/1Gb.file bs=64k | dd of=/dev/null ``` 12. **确定最佳块大小**: 测试...

    Linux C大文件的创建和读写速率

    使用基准测试工具如`hdparm`、`dd`或自定义程序,测量文件的读写速度,评估和优化代码性能。 通过以上方法,我们可以在Linux下有效地创建和读写大文件,同时通过合理的优化策略提升读写速率。在实际应用中,根据...

    服务器压力测试报告.docx

    - **磁盘IO**:测试磁盘读写速度,以评估数据存取性能。 - **系统最大负载**:确定服务器能承受的最大并发请求。 - **用户并发**:测试在不同并发用户下,服务器的响应时间和最大处理能力。 5. **测试场景**: ...

    Linux 系统内存性能测试shell脚本

    总之,这个Linux系统内存性能测试shell脚本提供了一种实用的方法来评估内存的读写速度和带宽。通过理解`dd`命令和`/proc/sys/vm/drop_caches`文件的作用,我们可以有效地进行内存性能调优,以优化系统的运行效率。

    linux磁盘io调度分析

    分别使用四种不同的I/O调度器来进行测试: - **Deadline:** ```bash time dd if=/dev/sda1 of=/dev/null bs=2M count=300 ``` - **NOOP:** ```bash time dd if=/dev/sda1 of=/dev/null bs=2M count=300 `...

    Linux 系统测试硬盘性能shell 脚本

    在Linux系统中,测试硬盘性能是一项重要的任务,它可以帮助我们评估磁盘的读写速度、块访问效率以及寻道时间,这些因素直接影响到系统的整体运行速度和响应能力。本文将详细解析一个使用shell脚本来测试硬盘性能的...

    SAN网络DD命令解决故障一例

    DD命令是Linux系统中用于数据复制和转换的工具,常用于测试磁盘或网络的读写速度。在本文中,测试命令`dd if=/dev/zero of=/dev/rlv_test bs=1024k count=10000`用于从零设备生成数据并写入到裸设备rlv_test,以此...

    DD-FIO-Auto-Run:DD-FIO-自动运行

    在磁盘性能测试中,通常用它来衡量磁盘的读写速度。 - 使用 dd 命令的基本格式是 `dd if=源文件 of=目标文件 bs=块大小 count=块数`,其中`if`代表输入文件,`of`代表输出文件,`bs`定义了每次读写的数据块大小,而...

    专题资料(2021-2022年)Linux中dd命令详解.docx

    12. 硬盘性能测试:使用dd生成1GB文件`/root/1Gb`,以测试硬盘读写速度。 dd命令的用途广泛,不仅限于上述示例,还可以用于创建启动盘、调整文件系统大小、检查硬件性能等多个场景。但需要注意的是,dd命令操作直接...

    生产系统主机io性能分析指南

    高速缓存通过预加载或缓存频繁访问的数据减少寻道时间,而RAID则通过数据冗余或条带化提高读写速度和数据可靠性。 综上所述,生产系统主机IO性能分析是一项复杂但至关重要的任务,涉及多个层面的技术考量。通过对dd...

    行业文档-设计装置-一种Linux系统下测试硬盘写入速度的方法.zip

    `dd`不仅可以用于复制文件,还可以用来生成特定大小的数据块,这对于测试磁盘读写速度非常有用。其基本语法如下: ```bash dd if=源文件 of=目标文件 bs=块大小 count=块数量 conv=fdatasync ``` - `if`:指定输入...

    linux整理1

    8. **磁盘读写速度测试**: 测试磁盘的读写速度通常使用`dd`命令。例如,`dd if=data bs=64k |dd of=/dev/null`测试读取速度,`dd if=/dev/zero of=test.dat bs=80k count=13889`测试写入速度。通过计算时间和传输...

    生产数据库架构改造方案样本.doc

    - 磁盘性能测试:使用dd命令测试读写性能,选择最佳块大小。 - 数据库性能测试:使用tpcc-mysql等工具进行性能测试,生成报告。 - 业务测试:在实际业务环境中测试DI运行时间和数据调度响应时间,评估系统性能。 ...

    linux下的dd和cpio命令.pdf

    此外,`dd`还能用于测量磁盘的读写速度,例如: ```bash dd if=/dev/zero of=test_file bs=1M count=1000 oflag=direct ``` 这将创建一个1GB的大文件,并使用`/dev/zero`(零设备)来测量写入速度。同样,用`of=/dev...

Global site tag (gtag.js) - Google Analytics