Максимальный предел 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: ...
Другие вопросы по тегам