Fallocate Command

Linux's fallocate command

The "fallocate" command is probably one of the lesser known commands that can be used within Linux to create a file. fallocate is used to preallocate blocks to a file. For filesystems that support the "fallocate" system call, this is done quickly by allocating blocks and marking them as uninitialised, thus requiring no I/O to the data blocks. This is a much faster method of creating a file rather than filling it with zeros. Large files can be created almost instantly without having to wait for any I/O operations to complete. The fallocate system call is supported on the following filesystems: btrfs, ext4, ocfs2, and xfs filesystems. Below are some examples of how you can use the fallocate command.

fallocate command examples

General Syntax: fallocate [-n] [-o offset] -l length filename

The length and offset arguments may be followed by binary (2^N) suffixes KiB, MiB, GiB, TiB, PiB and EiB (the "iB" is optional, e.g. "K" has the same meaning as "KiB") or decimal (10^N) suffixes KB, MB, GB, PB and EB.

Use fallocate command to create a 1GB file

The following command will allocate a file with a size of 1GB.


fallocate -l 1G test_file1.img

The above command created a file called "test_file1.img" with a size of 1GB. The file was created almost instantly (with no I/O delay).

Output of the command being run:


$ ls -rtlh test_file*
-rw-r--r-- 1 john john 1.0G Sep  2 12:31 test_file1.img

Use fallocate command to create a 10GB file

The following command will allocate a file with a size of 10GB.


fallocate -l 10G test_file2.img

The above command created a file called "test_file2.img" with a size of 10GB. As with the previous example, the file was created almost instantly (with no I/O delay).

Outut of the command being run:


$ ls -rtlh test_file*
-rw-r--r-- 1 john john 1.0G Sep  2 12:31 test_file1.img
-rw-r--r-- 1 john john  10G Sep  2 12:38 test_file2.img

Note: The exit code returned by the fallocate command is "0" on success and "1" on failure.