Максимальный предел inode для файловой системы ext4 - кто-нибудь может объяснить?
Недавно у нас возникла проблема, когда одна из файловых систем ext4 оказалась неспособной обрабатывать очень большое количество файлов, more than 6mln in this case
, несмотря на наличие достаточного места. Это 6mln
максимальное число, которое может иметь файловая система ext4 при форматировании со всеми настройками по умолчанию? Я попытался Google это, но не получил никакого определенного ответа. Кто-нибудь здесь может пролить свет на это, пожалуйста? Ура!!
3 ответа
Для ext4 нет значения по умолчанию как такового, оно зависит от размера устройства и параметров, выбранных при создании. Вы можете проверить существующие ограничения, используя
tune2fs -l /path/to/device
Например,
root@xwing:~# tune2fs -l /dev/sda1
tune2fs 1.42 (29-Nov-2011)
Filesystem volume name: <none>
Last mounted on: /
[lots of stuff snipped]
Inode count: 1277952
Free inodes: 1069532
Inodes per group: 8192
Inode blocks per group: 512
[lots of stuff snipped]
Согласно man mkfs.ext4
-i байт на индекс
Укажите соотношение байт / индекс. mke2fs создает индекс для каждого байта на индекс байтов пространства на диске. Чем больше отношение байтов к индексу, тем меньше будет создано инодов. Это значение обычно не должно быть меньше, чем размер блока файловой системы, поскольку в этом случае будет сделано больше inode, чем когда-либо может быть использовано. Имейте в виду, что после создания файла число инодов в файловой системе невозможно увеличить, поэтому будьте осторожны, выбирая правильное значение для этого параметра.
Это зависит от того, как вы отформатировали файловую систему. С помощью tune2fs -l <device>
Вы можете найти число inode, которое имеется в вашем устройстве, вероятно, около 6 миллионов inode в вашем случае. Каждый файл или каталог использует индекс.
Насколько я знаю, единственная возможность увеличить количество inode- это переформатировать вашу файловую систему. -i
параметр к mkfs
может использоваться для указания отношения байтов к индексу. Значение по умолчанию определено в /etc/mke2fs.conf
(в моей системе: 16384).
Чем больше отношение байтов к индексу, тем меньше число инодов, а меньше - больше. Значения по умолчанию работают хорошо в большинстве случаев, но если у вас есть большое количество маленьких файлов, вы можете столкнуться с ограничением и вам может потребоваться отформатировать файловую систему с меньшим отношением байтов к индексу.
Объяснения, данные другими, верны: каждый файл или папка в вашей системе представляет собой индексный дескриптор . Существует ограничение на количество используемых индексных дескрипторов.
Как мы можем работать с этой штукой?
Проверьте использование iNode
Используйте командуdf
с аргументом-i
, то есть:
df -i
. Например, я получаю:
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 247945 421 247524 1% /dev
Какое максимальное количество iNodes я могу получить?
По данным RedHat, на томе может быть 4,3 миллиарда iNodes. Цитировать...
...теоретическое максимальное количество инодов равно 2^32 (приблизительно 4,3 миллиарда инодов)... (Источник: RedHat.com)
Увеличьте лимиты INode
Вам придется полностью переформатировать том, поэтому сначала обязательно сделайте резервную копию всех данных. А затем, если вам нужно, скажем, 200 миллионов iNodes, просто запустите...
mkfs.ext4 -N 200000000 /dev/you/want/reformatted
И на моем томе объемом 100 ГБ это дает мне результат вроде...
Creating filesystem with 26213616 4k blocks and 250037568 inodes
Filesystem UUID: ...