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?
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.Sign up to join this community
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.
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.