zoukankan      html  css  js  c++  java
  • linux~dd命令

    dd命令可以轻易实现创建指定大小的文件,如dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源),但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢。
     
    在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘,则可以使用 dd if=/dev/zero of=test bs=1M count=0 seek=10000,此时创建的文件在文件系统中的显示大小为10000MB,但是并不实际占用block,因此创建速度与内存速度相当
    seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的。当然,因为不实际写入硬盘,所以你在容量只有10G的硬盘上创建100G的此类文件都是可以的。
     

    使用linux自带dd命令测试硬盘的读写速度:

    time有计时作用,dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写的大小,即一个块的大小,count是读写块的数量。

    测/data目录所在磁盘的纯写速度:

    ubuser@ubuser-OptiPlex-7010:~$ time dd if=/dev/zero of=1.txt bs=8k count=100000
    100000+0 records in
    100000+0 records out
    819200000 bytes (819 MB, 781 MiB) copied, 10.7367 s, 76.3 MB/s
    
    real 0m11.367s
    user 0m0.000s
    sys 0m1.200s

    测/data目录所在磁盘的纯读速度:

    ubuser@ubuser-OptiPlex-7010:~$ time dd if=1.txt of=/dev/null bs=8k count=100000
    100000+0 records in
    100000+0 records out
    819200000 bytes (819 MB, 781 MiB) copied, 0.160082 s, 5.1 GB/s
    
    real    0m0.161s
    user    0m0.008s
    sys     0m0.152s

     测读写速度:

    ubuser@ubuser-OptiPlex-7010:~$ time dd if=1.txt of=2.txt bs=8k count=100000
    100000+0 records in
    100000+0 records out
    819200000 bytes (819 MB, 781 MiB) copied, 26.7008 s, 30.7 MB/s
    
    real    0m26.765s
    user    0m0.036s
    sys     0m1.156s
    理论上测试复制量越大测试结果越准确。
     
    正常测试的时候可能不止测试一边,可能会需要很多遍求取平均值,这个测试结果在普通的重定向是没有效果的,google 后发现可以用下面的方式重定向到一个文件:
    dd if=/dev/zero of=/var/test bs=8k count=1000000  2>> info,这样测试的结果就到info文件里面了
     
     

  • 相关阅读:
    MySQL query_cache_type 详解
    MySQL validate_password 插件
    MySQL冷备份的跨操作系统还原
    MySQL5.7新特性笔记
    MySQL参数详解
    保存mysql用户的登录信息到~.my.cnf文件;用于方便登录操作。
    MySQL应用层传输协议分析
    python egg
    MySQL 加锁处理分析
    train_test_split, 关于随机抽样和分层抽样
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/14484724.html
Copyright © 2011-2022 走看看