The -T largefile
flag adjusts the amount of inodes that are allocated at the creation of the file system. Once allocated, their number cannot be adjusted (at least for ext2/3, not fully sure about ext4). The default is one inode for every 16K of disk space. -T largefile
makes it one inode for every megabyte.
Each file requires one inode. If you don't have any inodes left, you cannot create new files. But these statically allocated inodes take space, too. You can expect to save around 1,5 gigabytes for every 100 GB of disk by setting -T largefile
, as opposed to the default. -T largefile4
(one inode per 4 MB) does not have such a dramatic effect.
If you are certain that the average size of the files stored on the device will be above 1 megabyte, then by all means, set -T largefile
. I'm happily using it on my storage partitions, and think that it is not too radical of a setting.
However, if you unpack a very large source tarball of many files (think hundreds of thousands) to that partition, you have a chance of running out of inodes for that partition. There is little you can do in that situation, apart from choosing another partition to untar to.
You can check how many inodes you have available on a live filesystem with the dumpe2fs
command:
# dumpe2fs /dev/hda5
[...]
Inode count: 98784
Block count: 1574362
Reserved block count: 78718
Free blocks: 395001
Free inodes: 34750
Here, I can still create 34 thousand files.
Here's what I got after doing mkfs.ext3 -T largefile -m 0
on a 100-GB partition:
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/loop1 102369 188 102181 1% /mnt/largefile
/dev/loop2 100794 188 100606 1% /mnt/normal
The largefile version has 102 400 inodes while the normal one created 6 553 600 inodes, and saved 1,5 GB in the process.
If you have a good clue on what size files you are going to put on the file system, you can fine-tune the amount of inodes directly with the -i
switch. It sets the bytes per inode ratio. You would gain 75% of the space savings if you used -i 65536
while still being able to create over a million files. I generally calculate to keep at least 100 000 inodes spare.