简介:在涉及磁盘空间相关的测试项中,经常需要快速创建大文件以便抢占磁盘剩余空间。
历史攻略:
创建大文件的三种命令:
1、dd
2、truncate
3、fallocate
联系与区别:
## dd
dd 命令用于复制和转换文件。它最常见的用途是创建实时 Linux USB。
实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,
该命令将需要一些时间才能完成。
案例:可以使用 bs=1M 和 count=1024 来获得 1024 Mb 的文件。
dd if=/dev/zero of=myfile-01.img bs=2G count=1
## truncate
truncate 命令将一个文件缩小或者扩展到所需大小。
使用 -s 选项来指定文件的大小。
案例:truncate -s 2G myfile-02.img
## fallocate
fallocate 命令,比较推荐的创建大文件的方法,
因为它创建大文件的速度是最快的。
案例:fallocate -l 2G myfile-03.img
结论:dd 和 truncate 创建的文件是稀疏文件。在计算机世界中,稀疏文件是一种特殊文件,具有不同的表观文件大小(它们可以扩展到的最大大小)和真实文件大小(为磁盘上的数据分配了多少空间)。fallocate 命令则不会创建稀疏文件,而且它的速度更快,比较推荐使用 fallocate 创建大文件的原因。
案例源码:
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# dd if=/dev/zero of=myfile-01.img bs=2G count=1
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 3.35002 s, 641 MB/s
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# truncate -s 2G myfile-02.img
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# fallocate -l 2G myfile-03.img
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# ll
total 4194316
drwxr-xr-x 2 root root 4096 Jan 6 23:13 ./
drwxr-xr-x 15 root root 4096 Jan 6 00:26 ../
-rw-r--r-- 1 root root 2147479552 Jan 6 23:12 myfile-01.img
-rw-r--r-- 1 root root 2147483648 Jan 6 23:12 myfile-02.img
-rw-r--r-- 1 root root 2147483648 Jan 6 23:13 myfile-03.img
(base) root@ci4vyvxi:/home/write-pro/test-mkfile#
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# ls -l --block-size=G
total 5G
-rw-r--r-- 1 root root 2G Jan 6 23:12 myfile-01.img
-rw-r--r-- 1 root root 2G Jan 6 23:12 myfile-02.img
-rw-r--r-- 1 root root 2G Jan 6 23:13 myfile-03.img
创建前:剩余14G
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 1.5M 1.6G 1% /run
/dev/vda3 36G 20G 14G 59% /
创建后:No space left on device
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# fallocate -l 15G myfile-03.img
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# fallocate -l 15G myfile-04.img
fallocate: fallocate failed: No space left on device
(base) root@ci4vyvxi:/home/write-pro/test-mkfile# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 1.5M 1.6G 1% /run
/dev/vda3 36G 36G 0 100% /
即:可通过快速创建大文件,来填充磁盘剩余空间,进而测试因磁盘不足所需要测的内容。