disk space overhead in ext4

13,037

Solution 1

I don't know if it applies to you, but just in case: most of the time the huge majority of the apparent overhead of ext2/3/4 will be due to the default significant amount of reserved blocks for root. Make sure you specify -m 0 (or 1) to mkfs.ext4 when creating the filesystem or to tune2fs if adjusting it afterwards. The default is 5, which stands for 5% of total blocks and can be excessive in most cases.

Solution 2

The most significant overhead comes from the inode tables, so it obviously depends on how many inodes you allocate. With the default options, every 128mb of disk gets 2 mb ( 8192 x 256 bytes each ) of inodes, or 1.6% overhead.

Solution 3

Difficult question to answer this as the amount of DATA space would vary with the number of files, their size, ACLs, Root reserved space, blocksize etc. There is not really a easily fixed answer to this question.

Share:
13,037

Related videos on Youtube

Martin L. R.
Author by

Martin L. R.

Android developer at Motorola Mobility

Updated on September 18, 2022

Comments

  • Martin L. R.
    Martin L. R. over 1 year

    I'd like to know if there's some rule (or formula) I can apply to find out how much of disk space will be used by the filesystem in an ext4 partition. for example, in a partition of 100 GB, how much can I actually use? does it depend on other parameters like inode size, etc?

    • Admin
      Admin about 4 years
      I think it mostly depends on your inode count and the amount of metadata. One could in theory encode all data in directory structure and use just lots of zero byte files but the file system obviously would not take zero bytes to store those zero byte files. Ext4 supports extended attributes which can contain practically unlimited metadata attached to any single file.
  • Mircea Vutcovici
    Mircea Vutcovici over 12 years
    The reserved space serves two purposes: to lower the fragmentation chances and to have some space for fsck. I do not recommend to make it 0.
  • Mikko Rantalainen
    Mikko Rantalainen about 4 years
    Unless one is speaking about storing some archival content which never changes, filling filesystem to brim will cause major performance problems in long run. Fragmentation and probability of random out-of-disk problems will be your first signs. Using 5% might be too high on really big filesystems, though. The inode structures will cause ~1.6% overhead in any case so in best case you should expect to use ~95% of raw block storage. For best performance, targeting closer to 80% would make sense.
  • joeycozza
    joeycozza almost 3 years
    Indeed, increasing the mkfs.ext4 -i ... amount (inode ratio) made the number of inodes smaller, and thus made the free space reported by df --block-size=1 larger.