验证大盘鸡是不是真的大盘?超售终结者?
- 前情提要
某些云主机商让我fallocate 测试硬盘 - 先说结论
为了方便不想看太长的MJJ,结论就是不能。至于这串操作是否商家偷换概念夹带私货,便不得而知了。
- 科普时间
A. linux中的文件分配的方式,绝大部分取决于文件系统的支持。
B. 为了保证一个文件可以顺利完成写入,文件分配是常见的操作,就如入住酒店一样,为了保证你能付房费,就必须先冻结银行卡里的一部分余额。
C. 面对一个大文件时,那么如何快速分配一个文件,这也是人类以前曾关心过的事情。一个文件大致上可以分成文件信息和文件数据两部分,可以理解为一个文件如一本书,文件信息写在封面上。
第一种传统方法,dd并写入数据。
这种方式就是完整的出书过程,从头到尾,有多少就是多少。没什么可多说的。第二种称之为稀疏文件,只造壳。
这种方式只写书的封面,书里面连一页纸都没有,实际上只占用一个文件项,所以你在一个1G盘上声称有几PB都是没问题的。专业说法:block未分配。
常见的造壳方式有truncate、 dd w/ seek
第三种是上述两种的折中方案,可以理解为轻度的预分配。
这种方式在写完书的封面的基础上,还把目录预先写好,也就是先决定好了书的内容框架,换句话说你的目录都写好了所以你不能写超你目录之外了,所以你只能在文件系统实际可用空间范围内进行分配。专业说法:block已分配,但未written。
所以,这也是造壳的一种方式。常用方法:fallocate
- 验证方式
自己开个虚拟机,上去建几个硬盘,分别运行上述命令,看看硬盘文件是不是真的变大不就好了?
(本文未经实际验证,纯理论上探讨,有兴趣的mjj可以自行验证) - 写在最后
做什么事都得脚踏实地,从来没有什么快速方便的途径,如果有要么是歪门邪道,要么就是你被忽悠了。
(想一秒塞满硬盘?老老实实的写数据吧!)