15

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)?

2
  • 1
    I 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.
    – DevSolar
    Jun 1, 2010 at 22:33
  • @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. Mar 27, 2015 at 22:34

4 Answers 4

10

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.

3
  • On my systems with CentOS 5.3 inode size is 128 by default. May 20, 2010 at 11:12
  • 1
    @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.
    – janneb
    May 20, 2010 at 11:20
  • 1
    On CentOS 5.5, /etc/mke4fs.conf does specify a default inode size of 256.
    – sciurus
    Mar 6, 2011 at 19:06
4

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.

2

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.

0

Grub doesn't work with an inode size of 256, so 128 is what I use.

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .