Назад | Перейти на главную страницу

Огромный inode каталога / var / log в ext3 после создания и удаления большого количества файлов

У меня есть Debian Jessie, / var / log в корневом разделе типа ext3 (rw, relatime, data = order). Четыре дня назад logrotate сбросил десятки тысяч файлов, это было исправлено, и файлы были удалены. После этого:

# du -hc /var/log/
511M    total

Файлы и подкаталоги всего 255M:

#du -hc --exclude=.. --exclude=. /var/log/* /var/log/.*
255M    total

Остальное - это сам каталог:

# ls -ldh /var/log
drwxr-xr-x 15 root root 257M Feb 18 06:55 /var/log
# stat /var/log
  File: ‘/var/log’
  Size: 268496896       Blocks: 524936     IO Block: 4096   directory

Некоторые операции (для меня кажутся случайными) в / var / log занимают очень много времени (до 5 минут). Я не могу ни размонтировать, ни перемонтировать его только для чтения прямо сейчас по нетехническим причинам.

Почему может возникнуть такой большой каталог и почему он вызывает огромные лаги? Как его "спустить" без размонтирования? Какие могут быть предостережения относительно остановки rsyslog, создания нового каталога, перемещения в него содержимого / var / log и переименования в / var / log, аналогично предложенному в https://serverfault.com/a/487245 ?

Как вы сказали, в этом каталоге были десятки тысяч файлов. Список записей каталога большой и читать все это дорого и медленно. Если вы случайно посмотрите на недавно открывшийся файл, который все еще находится в кеше, это будет намного быстрее.

Перемещение каталога и создание нового - эффективный способ смягчить его. Вы можете удалить большую медленную по своему усмотрению, даже если это займет некоторое время.

fsck также может оптимизировать каталог, но для этого необходимо его размонтировать.

Для системного журнала удаленное ведение журнала может быть альтернативой локальным файлам, если это поможет с кратковременным отключением журнала.