Why do I get more free space than ext4 after formatting in XFS?

EXT3/EXT4 filesystems take 5% of partition size for security etc. (e.g. in "non free disk space disk" cause).

If it isn't root partition, You could change this 5% to e.g. 1% by doing:

sudo tune2fs -m 1 /dev/sda3

where you should change sda3 to your partition.


With ext4 (and the extfs family) the inode tables are pre-allocated at format time. This is the traditional Unix behavior concerning file systems. When you format a volume with the extfs file system, you can tweak the number of inode you expect using the -N parameter of the mkfs utility. (Source).

This design may offer better performance (when allocating many files at a time) in spite of scalability. One has to estimate the number of inode needed at format time. A volume containing mostly small files, say a mail server, will require more inodes per gigabyte than a volume containing ISOs.

Once you used all the inodes you just can’t create new file even if there is still free space on the drive. The bigger the volume is, the larger the inode tables will be. That leads to many gigabytes lost on large drives.

On the other hand, XFS uses a technique called "dynamic inode allocation" (Source). This leads to better scalability as the number of inodes grows or shrinks depending on the amount of data on the volume. This is a better design when you can’t predict what the file system will be used for or when you expect to save the extra space for your data. This is also the NTFS behavior.

What has been said about journaling is wrong, journaling costs only a few megabytes. The main space loss is due to static inode allocation.