Linux: Why change inode size?
Solution 1
I think by default current versions of mkfs.ext2/3/4 default to 256 byte inode size (see /etc/mke2fs.conf). This IIRC enables nanosecond timestamps with ext4, and as you say, more extended attributes fit within the inode. Such extended attributes are, for instance, ACL's, SELinux labels, some Samba specific labels.
Bigger inodes of course waste a little bit of space, and as you make them bigger you get into diminishing returns territory pretty quickly. The default 256 bytes is probably a perfectly good compromise for most situations.
Solution 2
With the ext4 option inline_data (new in Linux 3.8), there is a new good reason for larger inode sizes: Given this option, the file contents can be stored in the inode of the file (if the file is small enough). This avoids one seek operation. I have not seen any real-world benchmarks for this, yet.
Solution 3
Is there any reason to increase inode size on modern high-capacity drives (2TB and more)?
If you want to handle timestamps after 2038, otherwise it won't work.
From mkfs.ext2
manual:
File systems with an inode size of 128 bytes do not support timestamps beyond January 19, 2038. Inodes which are 256 bytes or larger will support extended timestamps, project id's, and the ability to store some extended attributes in the inode table for improved performance.
Note that some distribution have this in /etc/mke2fs.conf
:
small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}
which means even nowadays small partitions like /boot
will have this smaller inode_size
.
From mke2fs
man page:
If the filesystem size is greater than or equal to 3 but less than 512 megabytes, mke2fs(8) will use the filesystem type small.
Related videos on Youtube
Vladislav Rastrusny
Updated on September 17, 2022Comments
-
Vladislav Rastrusny over 1 year
Tune2fs allows to change inode size from default (128 bytes on ext3, 256 bytes on ext4) to almost anything, but it should be power of two. What are the reasons for changing default inode size?
Here it's written that this can be done to be able to store ACL attributes inside inodes. What else can be stored inside an inodes?
Is there any reason to increase inode size on modern high-capacity drives (2TB and more)?
-
DevSolar almost 14 yearsI know a reason not to change the inode size from 128 bytes - Ext2IFS will no longer be able to mount your partition. If you are using this driver to access your Linux partitions from Windows, you should take care to keep your inode size at 128 bytes.
-
Franklin Piat about 9 years@DevSolar Nowadays [in 2015], Ext2IFS is obsolete and ext3 too :-) How to read ext4 partitions on Windows?. ext4 defaults to 256 to store some new file attributes.
-
-
Vladislav Rastrusny almost 14 yearsOn my systems with CentOS 5.3 inode size is 128 by default.
-
janneb almost 14 years@FractalizeR. Yes, mke2fs on RHEL/CentOS 5 dates back to 2006. I think the default changed a few years ago, sometime when ext4 was declared stable maybe.
-
sciurus about 13 yearsOn CentOS 5.5, /etc/mke4fs.conf does specify a default inode size of 256.
-
Patrick Mevzek about 2 yearsgrub is supporting 256 bytes inode size since 2008, with patches for its version 0.97, see forums.fedoraforum.org/… for example.