Вопрос или проблема
Я был удивлён, когда на файловой системе, отформатированной относительно недавно, закончились иноды. Когда я сравнил её с другой файловой системой, отформатированной на более старой версии Debian (к сожалению, я не знаю точные версии), старая файловая система имела более чем в два раза больше инодов, несмотря на то, что была всего на две трети меньше по размеру.
Файловая система Иноды Занято Свободно Использ% Подключена к
/dev/sda1 274661376 274661376 0 100% /18tb
/dev/sdb1 732430336 127388618 605041718 18% /12tb
Я не помню, чтобы вручную указывал плотность инодов для какой-либо из файловых систем, что-то изменилось в настройках по умолчанию? Существует ли какой-то волшебный порог размера, которыйtrigger’ит другую политику?
Если ваши точки монтирования точно отражают размеры томов, то вы действительно преодолели порог размера. mke2fs
применяет разные параметры в зависимости от размера файловой системы:
- менее 3 мегабайтов: тип “дискета”, с коэффициентом инодов 8192 (байт на инод) и блоками по 1024 байта
- от 3 до 512 мегабайтов: тип “малый”, с коэффициентом инодов 4096 и блоками по 1024 байта
- от 512 мегабайтов до 4 терабайтов: тип “по умолчанию”, с коэффициентом инодов 16384 и блоками по 4096 байта
- от 4 до 16 терабайтов, тип “большой” с коэффициентом инодов 32768
- 16 терабайтов и более, тип “огромный” с коэффициентом инодов 65536
Смотрите man mke2fs
и /etc/mke2fs.conf
для подробностей. Я подозреваю, что приведённые выше единицы должны быть единицами IEC, а не ISO, но в мануале используется последнее.
Ответ или решение
Вопрос о том, изменилось ли значение по умолчанию для байтов на индекс (bytes-per-inode), действительно актуален при сравнении различных файловых систем. Зависимость между размером файловой системы и количеством доступных инодов является ключевым фактором, который стоит учитывать при их создании.
При форматировании файловой системы с помощью команды mke2fs
в зависимости от размера диска применяются разные настройки. Это приводит к тому, что встарой версии Debian ваши файловые системы могли иметь иные параметры, что, в свою очередь, объясняет разницу в количестве инодов.
Рассмотрим подробнее, как устроены эти параметры:
-
Меньше 3 МБ: Для таких небольших объемов используется тип "флоппи", где коэффициент инодов составляет 8192 байт на инод и размер блока равен 1024 байта.
-
От 3 до 512 МБ: В этом диапазоне применяется тип "малый", с инодами в соотношении 4096 байт на инод и 1024 байтовыми блоками.
-
От 512 МБ до 4 ТБ: Здесь используется стандартный тип, устанавливающий соотношение 16384 байт на инод при блоках размером 4096 байтов.
-
От 4 до 16 ТБ: Применяется тип "большой" с коэффициентом 32768 байт на инод.
-
16 ТБ и более: В этом случае используется тип "огромный" с инодами в соотношении 65536 байт на инод.
Ваше наблюдение о том, что на новом файловом системе меньше инодов в сравнении со старой, может быть связано с тем фактом, что вы перешли через эти размерные границы. Например, если вы отформатировали новую файловую систему, которая превышает 4 ТБ, но не учли изменение коэффициента байт на инод, это может привести к быстрому исчерпанию инодов.
Если вы не указывали вручную параметры инодов при форматировании, это значит, что настройки по умолчанию были применены. Возможно, в вашей старой системе использовалась другая версия Debian, где алгоритм формирования инодов был другим, или же сам параметр по умолчанию изменился в более поздних версиях.
Чтобы избежать подобных ситуаций в будущем, вы можете указать желаемое соотношение байт на инод с помощью флага -i
в команде mke2fs
. Например, команда mke2fs -i 16384 /dev/sdX
явно укажет на необходимость использовать 16384 байт на инод, что позволит вам управлять плотностью инодов в зависимости от ваших нужд.
Таким образом, стоит обратить внимание на конфигурации, используемые при создании новых файловых систем, и, возможно, протестировать различные значения для достижения наилучших результатов при управлении инодами.