ext [234] файловые системы имеют фиксированное максимальное число inode;для каждого файла или каталога требуется один индекс.Вы можете увидеть текущий счет и ограничения с df -i
.Например, в файловой системе ext3 объемом 15 ГБ, созданной с настройками по умолчанию:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda 1933312 134815 1798497 7% /
В частности, нет никаких ограничений на каталоги;Имейте в виду, что для каждого файла или каталога требуется хотя бы один блок файловой системы (обычно 4 КБ), даже если это каталог с одним элементом.
Как видите, 80 000 инодоввряд ли будет проблемой.А с опцией dir_index
(возможной с tune2fs
) поиск в больших каталогах не так уж и важен.Однако обратите внимание, что многим административным инструментам (таким как ls
или rm
) может быть сложно работать с каталогами, в которых слишком много файлов.Поэтому рекомендуется разбивать ваши файлы так, чтобы у вас не было более нескольких сотен до тысячи элементов в любом каталоге.Самый простой способ сделать это - хэшировать любой идентификатор, который вы используете, и использовать первые несколько шестнадцатеричных цифр в качестве промежуточных каталогов.
Например, допустим, у вас есть идентификатор элемента 12345 и он хэшируется на 'DEADBEEF02842.......'
,Вы можете хранить свои файлы под /storage/root/d/e/12345
.Теперь вы сократили количество файлов в каждом каталоге на 1/25.