У нас есть процесс сервера Linux, который записывает несколько тысяч файлов в каталог, удаляет файлы, а затем записывает еще несколько тысяч файлов в тот же каталог, не удаляя каталог. Я начинаю замечать, что процесс, выполняющий запись, становится все медленнее и медленнее.
У меня такой вопрос: размер каталога папки вырос с 4096 до более чем 200000, как видно из вывода ls -l.
root@ad57rs0b# ls -l 15000PN5AIA3I6_B всего 232 drwxr-xr-x 2 chef chef 233472 30 мая 21:35 штрихкоды
Могут ли большие размеры каталогов снизить производительность в ext3?
Спасибо.
Аарон
решение1
Да, большие размеры каталогов могут быть проблемой. Обычно лучше избегать их, хешируя файлы в подкаталоги. Если это не вариант, есть функция ext3, которая может значительно улучшить производительность поиска в больших каталогах:
tune2fs -O dir_index /dev/$DEVICE
e2fsck -D /dev/$DEVICE
Это включает хэши b-tree для данных индекса каталога, что значительно сокращает время поиска. Конечно, возможно, что в вашей установке это уже включено. Вы можете проверить, запустив эту команду и посмотрев dir_index
в выводе:
tune2fs -l /dev/$DEVICE | grep 'features:'
РЕДАКТИРОВАТЬ:
Также, вы можете рассмотреть настройку noatime
в качестве опции монтирования. Это не специфическая настройка для больших каталогов, но может предложить значительное улучшение производительности, когда происходит много активности файловой системы.