Linux: зачем менять размер inode?

Tune2fs позволяет изменить размер inode со стандартного (128 байтов в ext3, 256 байтов в ext4) почти на что угодно, но это должно быть степенью двойки. Каковы причины изменения размера inode по умолчанию?

Здесь написано, что это можно сделать, чтобы иметь возможность хранить атрибуты ACL внутри inode. Что еще можно хранить внутри инодов?

Есть ли причина для увеличения размера инода на современных дисках большой емкости (2 ТБ и более)?

4 ответа

Решение

Я думаю, что по умолчанию текущие версии mkfs.ext2/3/4 по умолчанию имеют размер индекса 256 байт (см. /Etc/mke2fs.conf). Этот IIRC позволяет наносекундные метки времени с ext4, и, как вы говорите, более широкие атрибуты вписываются в индекс. Такими расширенными атрибутами являются, например, ACL, метки SELinux, некоторые специфичные для Samba метки.

Большие иноды, конечно, тратят немного места, и когда вы увеличиваете их, вы довольно быстро попадаете на убывающую территорию возвращения. 256 байтов по умолчанию, вероятно, являются отличным компромиссом для большинства ситуаций.

С опцией ext4 inline_data (впервые в Linux 3.8) появилась новая веская причина для больших размеров inode: с помощью этой опции содержимое файла может храниться в inode файла (если файл достаточно мал). Это позволяет избежать одной операции поиска. Я еще не видел никаких реальных ориентиров для этого.

Есть ли смысл увеличивать размер inode на современных накопителях большой емкости (2 ТБ и более)?

Если вы хотите обрабатывать временные метки после 2038 года, иначе это не сработает.

Отmkfs.ext2руководство:

       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.

Обратите внимание, что в некоторых дистрибутивах это есть/etc/mke2fs.conf:

          small = {
        blocksize = 1024
        inode_size = 128
        inode_ratio = 4096
    }

это означает, что даже в наши дни небольшие разделы, такие как/bootэто будет меньшеinode_size.

Отmke2fsсправочная страница:

Если размер файловой системы больше или равен 3, но меньше 512 мегабайт, mke2fs(8) будет использовать тип файловой системы small.

Grub не работает с размером индекса 256, поэтому я использую 128.

Другие вопросы по тегам