У меня есть сервер Ubuntu 14.04, который не может создать новый каталог за пределами каталога 65 000. Я запустил tune2fs -l
и вижу, что dir_nlink
флаг установлен. Кто-нибудь знает, что еще можно проверить, чтобы это произошло? У меня есть много других клонов этой конфигурации сервера, которые все за пределами отметки 65 000 и работают как положено. Я сравнил результаты, tune2fs -l
и они кажутся такими же. У меня все еще есть несколько миллионов свободных инодов и блоков. Я размонтировал и перемонтировал файловую систему, и ничего не изменилось.
решение1
Ограничение на размер каталога Ext4
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 попытаться оптимизировать все каталоги, либо переиндексировав их, если файловая система поддерживает индексацию каталогов, либо отсортировав и сжав каталоги для получения каталогов меньшего размера или для файловых систем, использующих традиционные линейные каталоги.