Я достиг предела inode в моем разделе XFS. По этому поводу возникает множество вопросов. Некоторые предполагают, что ответ - увеличить максимальный процент пространства, выделяемого для inodes. Или, как xfs_growfs
manpage помещает это:
-m Укажите новое значение для максимального процента пространства в файловой системе, которое может быть выделено как индексные дескрипторы.
Я пробовал это, но не уверен, что вижу. Когда я достиг предела, по умолчанию было 25%. Это дало мне 409 600 129 инодов на образе диска размером 781 ГБ.
Я увеличил его до 100%, и теперь он позволяет мне 1 566 536 296 инодов.
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
...
/dev/loop3 1566536040 409600129 1156935911 27% /mnt/tiles
Я ожидаю написать более 2 миллиардов записей (в основном символических ссылок), поэтому даже на 100% этого недостаточно. Насколько я понимаю, XFS может поддерживать гораздо большее количество файлов, поэтому я думаю, что мне что-то не хватает.
Я пробовал перемонтировать с помощью -o inode64
, но разницы не было. (В любом случае этот параметр должен быть установлен по умолчанию).
$ sudo xfs_growfs -m 100 .
meta-data=/dev/loop3 isize=512 agcount=4, agsize=51200000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0 rmapbt=0
= reflink=1
data = bsize=4096 blocks=204800000, imaxpct=100
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=100000, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
inode max pct unchanged, skipping
Неужели размер моего диска недостаточен? Или есть какая-то другая конфигурация или ограничение, о которых я не знаю? Почему 100% выделение для inodes составляет всего 1,5 ГБ?
Хотя вы увеличили максимальное пространство, которое могут использовать inodes, вероятно, у вас слишком мало свободно пространство для поддержки более 1,5 млрд инодов. Поскольку каждый индексный дескриптор использует около 512 байт, по моим оценкам, у вас есть ~ 750 ГБ свободного / доступного пространства.
Попробуйте освободить место и / или расширить файловую систему.
Хотите верьте, хотите нет, но в вашей конфигурации ваш объем слишком мал для того, что вы пытаетесь выполнить. Минимальный размер inode для XFS при использовании проверок циклическим избыточным кодом (который у вас есть и используется по умолчанию) составляет 512 байт. 2 миллиарда символических ссылок, 512 байт на ссылку, означают, что вам нужно не менее 953 ГБ или 1 ТБ (в зависимости от вашего определения миллиарда) для хранения всех этих inodes.
Если у вас есть возможность переформатировать этот том, вы можете сделать его лучше для своих целей.
-i maxpct=90
во время процесса mkfs будет создан новый том, который может использовать 90% пространства в качестве inodes. Он не подойдет для вашего оборудования, но если вы можете изменить, сколько вы можете на это бросить, это позволит xfs использовать почти все пространство для отслеживания символических ссылок.-m crc=0 -i size=256
во время процесса mkfs отключит поддержку CRC и вдвое уменьшит размер вашего inode. Этот вариант подойдет вашему текущему оборудованию за счет отсутствия защиты от проблем с оборудованием.