预分配文件空间的行为和文件系统是有关系的,Linux的fallocate()在ext4,xfs,btrfs可以只改变文件大小,但不写入数据,也支持在没空间的时候分配报错。
$ time fallocate -l 200G file1
real 0m0.051s
user 0m0.000s
sys 0m0.003s
$ time fallocate -l 200G file2
fallocate: fallocate 失败: 设备上没有空间
real 0m0.004s
user 0m0.000s
sys 0m0.004s
【 在 shocker (\(^o^)/~) 的大作中提到: 】
: 也许原来够的,说不定你跑什么程序又把硬盘空间占了。一种下载工具开始真正下载前会现在硬盘上“生成”一个相同大小的文件把地盘占着,不够的时候就会告诉你,不过我觉得你一样会骂的,到时候就会说还没开始下载呢,硬盘就疯转起来了
--
FROM 103.90.178.*