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.