Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Given the current structure of a directory entry on a ext4 file system on Ubuntu, what is the maximum number of files a file system can contain?

What is the general method of calculating the maximum number of files a file system can contain?

share|improve this question

migrated from stackoverflow.com Jan 21 '10 at 13:49

This question came from our site for professional and enthusiast programmers.

3 Answers 3

Ext4 has a theoretical limit of 4 billion files, which is restricted by the size of inode number it uses to identify each file (ext4 uses 32-bit inode numbers). However, as John says, ext4 allocates inode tables statically, so the actual limit is set when the filesystem is created.

The df command shows you a count of free inodes on your filesystem:

$ df -i

Filesystem        iused     ifree  %iused  Mounted on
/dev/disk0s3   55253386  66810480    45%   /
/dev/disk1s3   55258045  66805821    45%   /Volumes/Clone

Ext4 also supports an unlimited number of sub-directories per directory, though it may default to a limit of 64,000. This is configurable -- see the ext4 article at Kernel Newbies.

For more information, see The new ext4 filesystem: current status and future plans from the 2007 Linux Symposium.

share|improve this answer

There isn't one, per se; it depends. When you create an ext4 file system, you decide the size of the inode table, which in turn governs the total number of directories or files the file system can hold at once.

share|improve this answer
6  
you can run tune2fs -l /path/to/device and look for the Inode count value to find what the limit is for a given filesystem –  Geoff Reedy Jan 20 '10 at 5:34
    
Can we increase the Inode count? As far as I know, inodes are stored as a linked list, so it's just like adding more nodes to the linked list. I guess, the question boils down to what can be the maximum length of a linked list? –  Manav MN Jan 20 '10 at 5:42
3  
In ext4 the inode table is statically allocated when the filesystem is created. The only way to increase it is to recreate the filesystem. The -N or -i options are used to set the number of inodes created. –  Geoff Reedy Jan 20 '10 at 6:25
1  
It is also worth noting that directories are files and must be counted as such. –  dmckee Jan 20 '10 at 18:12
1  
@ephemient Yes they do; any entry in the filesystem counts as an inode. –  MikeyB Jan 21 '10 at 14:55

Not Ubuntu, but on Redhat Linux basic commands such as find fail with a 'Too many arguments error' when run against a directory containing 3 million files. ls runs successfully if no parameters are included, but fails with the same error as soon as filter parameters are added.

Assuming reliability of such basic commands is a mandatory requirement I'd suggest that 3 million files is too many.

share|improve this answer
    
That's not a filesystem restriction though. –  Iain Jun 14 '13 at 10:14

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.