zoukankan      html  css  js  c++  java
  • 【转】dd命令详解及利用dd测试磁盘性能

    dd命令详解及利用dd测试磁盘性能

     
    linux下dd命令详解
    名称: dd
    使用权限: 所有使用者
    manpage 定义: convert and copy a file

    使用方式:
    dd [option]

    dd --help

    info dd

    dd --version

    输入或输出
    dd if=[STDIN] of=[STDOUT]

    强迫输入或输出的Size为多少Bytes
    bs: dd -ibs=[BYTE] -obs=[SIZE]

    语法:dd [选项]

    if =输入文件(或设备名称)。

    of =输出文件(或设备名称)。

    ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

    skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

    obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

    bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

    cbs = byte 一次转换bytes字节。

    count=blocks 只拷贝输入的blocks块。

    conv = ASCII 把EBCDIC码转换为ASCIl码。

    conv = ebcdic 把ASCIl码转换为EBCDIC码。

    conv = ibm 把ASCIl码转换为alternate EBCDIC码。

    conv = block 把变动位转换成固定字符。

    conv = ublock 把固定位转换成变动位。

    conv = ucase 把字母由小写转换为大写。

    conv = lcase 把字母由大写转换为小写。

    conv = notrunc 不截短输出文件。

    conv = swab 交换每一对输入字节。

    conv = noerror 出错时不停止处理。

    conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

    noerror
    出错时不停止。

    notrunc
    不截短输出文件。

    sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

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

    认识下两个"伪文件"

    /dev/null

    位桶文件(bit bucket),就是我们常说的空文件。是一个输出设备。

       任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.

    /dev/zero

    是一个输入设备,你可你用它来初始化文件。

        该设备无穷尽地提供0(是ASCII 0 就是NULL),可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入NULL。
        像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的). 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到. /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件.

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

    使用dd来测试硬盘读写速度
    dd只能提供一个大概的测试结果,而且是连续IO 而不是随机IO ,理论上文件规模越大,测试结果越准确。
     
    读性能测试
    # time dd  iflag=direct,nonblock  if=/dev/sda2 of=/dev/null bs=8k count=8388608

        因为/dev/sda2是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。

    写测试
    # time dd oflag=direct,nonblock if=/dev/zero f=/opt/iotest bs=8k count=8388608 
        因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。 
    读写测试
    # time dd iflag=direct,nonblock oflag=direct,nonblock if=/dev/sda2 f=/opt/iotest bs=8k count=8388608  
     
      注:bs是一次io读的规模,理论上bs越大,所测得性能越高
          count是读多少个"bs",也可以写成count=16G
         

    规避掉文件系统cache,直接读写,不使用buffer cache

    iflag=direct,nonblock

    oflag=direct,nonblock

    iflag=cio

    oflag=cio

    direct 模式就是把写入请求直接封装成io 指令发到磁盘

    direct 模式,就把数据写入系统缓存,然后就认为io 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘

     转自:http://blog.sina.com.cn/s/blog_61c006ea0100lbk1.html

  • 相关阅读:
    js基础学习
    线程安全与锁
    JS浏览器检测工具方法、url参数读取
    【转载】JS时间工具类收藏(时间转换、倒计时)
    使用JQuery插件Jcrop进行图片截取
    记录小文件上传的几个例子(含进度条效果,附源码下载)
    T-SQL分页查询语句
    记录JavaScript中使用keyup事件做输入验证(附event.keyCode表)
    知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件
    记录FormsAuthentication的使用方法
  • 原文地址:https://www.cnblogs.com/caogen1991/p/9881526.html
Copyright © 2011-2022 走看看