大多数文件系统的 “块尺寸” 都是 4kB, 给文件分配空间时,哪怕数据没占满 4kB, 也要消耗掉 4kB 的空间。比如这条命令:
echo "Hello, world!" > Test.txt
生成的新文件 Test.txt 只有 14B 的大小,但在文件系统里占用的空间却是 4kB. 再加上文件名、时间戳、权限属性等 Metadata, 占用的空间要超过 4kB.
众所周知,固态盘 SSD 的擦写次数是有限的,每写入一次数据,就要在对应的物理位置额外多增加一次擦写次数。那么上面那条命令在固态盘上增加的擦写数据量是 14B, 还是 4kB? 当然,文件名、时间戳、权限属性等 Metadata 还要额外占据一些空间。
假如固态盘也像文件系统那样存在一个 “最小分配单元”,那么分配数是 4kB 还是其他数值?该数值是固态盘的厂商在固件里设置死了,还是可以在内核软件层面进行调整?