Linux: Why change inode size?

14,637

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.

Share:
14,637

Related videos on Youtube

Vladislav Rastrusny
Author by

Vladislav Rastrusny

Updated on September 17, 2022

Comments

  • Vladislav Rastrusny
    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
      DevSolar almost 14 years
      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.
    • Franklin Piat
      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
    Vladislav Rastrusny almost 14 years
    On my systems with CentOS 5.3 inode size is 128 by default.
  • janneb
    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
    sciurus about 13 years
    On CentOS 5.5, /etc/mke4fs.conf does specify a default inode size of 256.
  • Patrick Mevzek
    Patrick Mevzek about 2 years
    grub is supporting 256 bytes inode size since 2008, with patches for its version 0.97, see forums.fedoraforum.org/… for example.