zoukankan      html  css  js  c++  java
  • 如何在 1 s内快速创建数百G超大文件?

    常规的创建文件方式有:

    1. touch
    2. vi(m)
    3. tee
    4. >>>

    但是这几种都只适合创建小的文本文件,某些情况下出于测试的需要,你需要快速创建一个超大的文件,可能要 上百G。这时候要使用上面几个命令,你可能要等一天的时间,效率非常低。

    接下来介绍几种我常用的方法

    1. dd

    dd命令,可以从标准输入或指定的文件中读取数据,拷贝至新文件。

    $ dd if=/dev/zero of=big_file count=10 bs=1G
    

    使用 time 命令,可以算出创建一个 10G的文件需要耗时多久?

    $ time dd if=/dev/zero of=big_file count=10 bs=1G
    10+0 records in
    10+0 records out
    10737418240 bytes (11 GB) copied, 7.93627 s, 1.4 GB/s
    
    real	0m7.941s
    user	0m0.000s
    sys	0m7.935s
    

    花了将近8秒的时间

    $ ls -lh big_file 
    -rw-r--r-- 1 root root 10G Jun  2 10:57 big_file
    

    2. fallocate

    fallocate命令可以为文件预分配物理空间。-l后接空间大小,默认单位为字节。也可后跟k、m、g、t、p、e来指定单位,分别代表KB、MB、GB、TB、PB、EB。

    $ fallocate -l 10G big_file
    

    使用 time 命令,可以算出创建一个 10G的文件需要耗时多久?

    $ time fallocate -l 10G big_file
    real	0m0.002s
    user	0m0.000s
    sys	0m0.001s
    

    居然只有 0.001秒。

    $ ls -lh big_file 
    -rw-r--r-- 1 root root 10G Jun  2 11:01 big_file
    

    使用 du 命令,查看是否是真正创建了一个 10G大小的文件?从结果来看,是的。

    $ du -sh big_file
    10G	big_file
    

    3. truncate

    truncate命令可以将文件缩减或扩展为指定大小,使用-s参数设置大小。

    $ truncate -s 10G big_file
    

    使用 time 命令,可以算出创建一个 10G的文件需要耗时多久?

    $ time truncate -s 10G big_file
    real	0m0.001s
    user	0m0.000s
    sys	0m0.001s
    

    也是只有 0.001 秒。

    不过与 fallocate 不同的是,allocate 创建的文件是真实大小,而 truncate 创建的并不是。

    使用 ls 和 du 命令,查看的结果是不一样的。

    $ ls -lh big_file 
    -rw-r--r-- 1 root root 10G Jun  2 11:11 big_file
     
    $ du -sh big_file 
    0	big_file
    

    由此可见 truncate 的作用是指定一个文件的大小,如果该文件不存在,就会创建该文件。如果指定文件的大小小于原先的大小,会丢失内容。

    这个命令指定的文件大小其实是虚拟的。只是显示出来的大小。如果你指定一个非常大的文件。其实服务器剩余空间并不会减少。


    以上,是我常用的几种创建大文件的方法,可以根据不同的使用场景进行选择,我一般使用的是 fallocate,速度够快,也是也会真实地占用磁盘空间,符合真实的测试场景。


  • 相关阅读:
    iview表格render多元素封装
    iview表单语法
    vue实例,extend methods——实例属性 vue和jQuery.js一起使用
    vue.js基础__ extend 扩展选项
    vue.js基础__ mixins 选项
    vue.js基础__ watch 选项
    vue.js基础__ methods 选项
    vue.js基础__ computed 选项
    vue.js基础__ propsData 选项
    vue-cli, webpack + vue 目录结构解读
  • 原文地址:https://www.cnblogs.com/wongbingming/p/13097394.html
Copyright © 2011-2022 走看看