• 前情提要
    某些云主机商让我fallocate 测试硬盘
  • 先说结论
    为了方便不想看太长的MJJ,结论就是不能。

    至于这串操作是否商家偷换概念夹带私货,便不得而知了。

  • 科普时间
    A. linux中的文件分配的方式,绝大部分取决于文件系统的支持。
    B. 为了保证一个文件可以顺利完成写入,文件分配是常见的操作,就如入住酒店一样,为了保证你能付房费,就必须先冻结银行卡里的一部分余额。
    C. 面对一个大文件时,那么如何快速分配一个文件,这也是人类以前曾关心过的事情。

    一个文件大致上可以分成文件信息和文件数据两部分,可以理解为一个文件如一本书,文件信息写在封面上。

    第一种传统方法,dd并写入数据。
    这种方式就是完整的出书过程,从头到尾,有多少就是多少。没什么可多说的。

    第二种称之为稀疏文件,只造壳。
    这种方式只写书的封面,书里面连一页纸都没有,实际上只占用一个文件项,所以你在一个1G盘上声称有几PB都是没问题的。

    专业说法:block未分配。

    常见的造壳方式有truncate、 dd w/ seek

    第三种是上述两种的折中方案,可以理解为轻度的预分配。
    这种方式在写完书的封面的基础上,还把目录预先写好,也就是先决定好了书的内容框架,换句话说你的目录都写好了所以你不能写超你目录之外了,所以你只能在文件系统实际可用空间范围内进行分配。

    专业说法:block已分配,但未written。

    所以,这也是造壳的一种方式。常用方法:fallocate

  • 验证方式
    自己开个虚拟机,上去建几个硬盘,分别运行上述命令,看看硬盘文件是不是真的变大不就好了?
    (本文未经实际验证,纯理论上探讨,有兴趣的mjj可以自行验证)
  • 写在最后
    做什么事都得脚踏实地,从来没有什么快速方便的途径,如果有要么是歪门邪道,要么就是你被忽悠了。
    (想一秒塞满硬盘?老老实实的写数据吧!)