У меня есть сервер Ubuntu 14.04, который не может создать новый каталог за пределами каталога 65 000. Я запустил tune2fs -l
и видно, что dir_nlink
установлен флаг. Кто-нибудь знает, что еще можно проверить, чтобы это произошло? У меня есть много других клонов этой конфигурации серверов, которые прошли отметку 65000 и работают, как ожидалось. Я сравнил tune2fs -l
выходы и они кажутся одинаковыми. У меня все еще есть несколько миллионов свободных индексов и блоков. Я размонтировал и снова подключил файловую систему, но ничего не изменилось.
Ext4 поддерживает два типа каталогов:
Линейные каталоги имеют ограничение в 65000 ссылок, т. Е. Возможно около этого количества подкаталогов. Каталоги, основанные на хэшах, не имеют ограничений.
При создании новой файловой системы по умолчанию используются хеш-каталоги. Если ваши каталоги по-прежнему линейны, возможно, вы обновили старый раздел ext3. (В Ext3 позже появилась функция каталогов на основе хешей.)
$ sudo debugfs /dev/partition
$ htree /
htree: Not a hash-indexed directory
Включите dir_index
(хеш-каталоги) и dir_nlink
(неограниченное количество ссылок) особенности.
sudo tune2fs -O dir_index,dir_nlink /dev/partition
Все вновь созданные каталоги теперь могут содержать неограниченное количество подкаталогов.
Если вы хотите преобразовать существующие каталоги, сделайте следующее:
Скажите fsck перестроить индексы каталогов:
sudo e2fsck -f -D /dev/partition
-f
заставляет fsck проверять диск, даже если он в чистом состоянии
-D
указывает e2fsck перестроить индексы:
Этот параметр заставляет e2fsck попытаться оптимизировать все каталоги либо путем их переиндексации, если файловая система поддерживает индексацию каталогов, либо путем сортировки и сжатия каталогов для меньших каталогов, либо для файловых систем, использующих традиционные линейные каталоги.