最近在学习Linux storage的过程中,研究了一下几个创建大文件的命令,特别是它们的区别. 可以参考这个提问Quickly create a large file on a Linux system.
1 | cd /tmp |
注意这里sync
之后,file cache是仍然存在的,如果要彻底drop file cache, run echo 3 > /proc/sys/vm/drop_caches
所以说,在需要实打实disk allocated的场景中,不要使用truncate
, 比如测试network, IO performance. dd
最耗时,占用CPU 以及IO最多,fallocate
比dd
稍微好些,创建大文件比较快,也确实占用了空间。
其实dd
也可以创建sparse file, with seek
option:
1 | dd if=/dev/zero of=sparse_file bs=1 count=0 seek=3G |
dd
can be configured write to disk rather as well:
1 | dd if=/dev/urandom of=/dev/sdb1 bs=1M count=2048 |
You can also shrink a file with many empty blocks with fallocate
command:
1 | dd if=/dev/zero of=./empty bs=1G count=3 |