linux下快速创建文件占用磁盘
在测试中有时间需要创造一些场景,比如服务器或主机中莫磁盘空间不足的情况,目前磁盘空间都很大,一般已T为单位,想要短时间把磁盘空间耗尽也不是件容易的事,想象下你需要耗尽10T空间的资源,需要多长时间?
实践中我尝试了多种方式:
tee创建文件占用空间
cat usr1.txt |tee 2022.1.9{1…1000}.txt
你可以选择比较大的usr1.txt文件,中括号中后面的数字也可以修改,以便创建更多的文件,占用更大的空间
创建好以后就可以看到下面的模样
直接拷贝文件来占用空间
cp filename path/test
你也可以写成脚本,一直不停的拷贝
用dd命令直接创建文件
dd if=/dev/zero of=test1 bs=1G count=1000
(bs的大小及文件个数可改)
test1文件真实存储,实际占用空间,通过这种方式占用空间耗时比较长,跟实际拷贝速度差不多
用truncate直接创建文件
truncate -s 10G test2
这种方式创建的文件被称为“空洞文件”,文件的部分内容并没有实际存在于硬盘上,用du命令查看文件占用的空间为0,创建文件不会报空间不足,速度快,但是不会真实占用空间
用fallocate命令创建文件*
fallocate -l 10G test3
fallocate 命令可以为文件预分配物理空间,du命令也可以看到文件的大小,如果空间不足会提示,且创建文件失败,速度很快*
总结
占用空间的方式还有很多,不一 一列举,但是想要短时间把10T的空间给占用也不是一件很容易的事,前三种方法都是真实生成文件来占用空间,生成速度不会太快;后面两种可以理解上只是概念上的,truncate创建的文件不分配磁盘空间,只不过是一个空文件,所以并不能占用空间;fallocate是分配磁盘空间的,实践证明使用这个命令来占用空间最快。