h20牛人大佬:
说实话,不是很喜欢发技术帖,但是看到误导向科普又不是很开心。

  • 前情提要
    某位试图重塑国人商家形象的商家开始了T楼
    在帖子中标榜了“硬盘能真的塞满”云云之类的
    https://www.mjjcpu.com/thread-787339-1-1.html

    随后,发表了一篇自诩干货的文章“超售终结者?”
    https://www.mjjcpu.com/thread-787355-1-1.html

    那么究竟是否如其帖子中所说真的能验证“大盘鸡是不是真的大盘?”

    .

  • 先说结论
    为了方便不想看太长的MJJ,结论就是不能。

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

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

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

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

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

    专业说法:block未分配。

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

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

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

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

    .

  • 验证方式
    自己开个虚拟机,上去建几个硬盘,分别运行上述命令,看看硬盘文件是不是真的变大不就好了?
    (本文未经实际验证,纯理论上探讨,有兴趣的mjj可以自行验证)

    .

  • 写在最后
    做什么事都得脚踏实地,从来没有什么快速方便的途径,如果有要么是歪门邪道,要么就是你被忽悠了。
    (想一秒塞满硬盘?老老实实的写数据吧!)

小沨牛人大佬:
年轻人你不讲武德

好运牛人大佬:
目前还没持有大盘鸡

zgs牛人大佬:
干就完了,塞满

jmls牛人大佬:
陆陆续续用了好几家大盘鸡,还是hosthatch体验最好。

KACA7牛人大佬:
楼主V5啊,知识普及贴。

三和大神牛人大佬:
刚入住应该都没问题,不过邻居一多可能就不一定了。

huba123牛人大佬:
先定再看

ntgoaywh牛人大佬:
h20