最近在測試一個專案上的問題,

需要將 Linux 上的磁碟空間灌爆,才比較容易重現這個問題,

但用 cp 來複製大檔案、或是用 dd 製造出大檔案都很慢,有沒有快一點的方式呢?

 

查了一下,原來有個叫做 fallocate 的指令,可以快速做出指定大小的檔案~

先來看一下求助訊息:

testuser@localhost ~ $ fallocate --help

Usage:
 fallocate [options] <filename>

Options:
 -n, --keep-size     don't modify the length of the file
 -p, --punch-hole    punch holes in the file
 -o, --offset <num>  offset of the allocation, in bytes
 -l, --length <num>  length of the allocation, in bytes

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see fallocate(1).

 

舉例來說,使用 fallocate -l <size> 就能製造出指定大小的檔案,

我這邊前面再加上了 time 來測量一下時間,居然不用 0.1 秒就能做出來了,

而且檔案大小確實是我指定的數字:

testuser@localhost ~ $ time fallocate -l 4G bigfile

real    0m0.043s
user    0m0.001s
sys 0m0.039s

testuser@localhost ~ $ ll -h bigfile
-rw-r--r-- 1 root root 4.0G Dec  5 01:00 bigfile

 

要灌爆 Linux 磁碟的話,只要將大小設成很大的值就行了,

像我的磁碟空間剩不到 20GB,建立一個 20GB 的檔案會失敗,

但這就可以將磁碟灌爆了:

testuser@localhost ~ $ time fallocate -l 20G bigfile
fallocate: bigfile: fallocate failed: No space left on device

real    0m0.069s
user    0m0.002s
sys 0m0.067s

testuser@localhost ~ $ ll -h bigfile
-rw-r--r-- 1 root root 4.2G Dec  5 00:59 bigfile

 

參考資料:Quickly create a large file on a Linux system?

 

文章標籤
創作者介紹

亂打一通的心情日記

ephrain 發表在 痞客邦 PIXNET 留言(0) 人氣()