Что делать, если количество inodes в файловой системе будет исчерпано через неделю?

«Что делать, если количество inodes в файловой системе будет исчерпано через неделю?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Первым делом я проверяю текущее использование inodes и локализую проблему.

1. Диагностика:

# Проверить использование inodes по всем точкам монтирования
df -i
# Найти директории с наибольшим количеством файлов
sudo find / -xdev -type f | awk -F/ '{print $2}' | sort | uniq -c | sort -rn | head -20

2. Основные причины и решения:

  • Множество мелких файлов (логи, кэш, сессии): Частая причина — неуправляемые логи приложения или файлы сессий в /tmp. Решение — найти и очистить или заархивировать.
    # Часто виновники — директории кэша и временные файлы
    sudo du --inodes -s /var/cache/* /tmp/* /var/log/* 2>/dev/null | sort -rn
  • Удалённые файлы, удерживаемые процессами: Файл удалён, но процесс его ещё использует, занимая inode.
    sudo lsof +L1 | grep deleted
    # Решение — перезапустить или корректно завершить процесс
  • Исчерпание inodes на Docker-хосте: Множество остановленных контейнеров, образов и томов.
    docker system df
    # Очистка
    docker system prune -a --volumes

3. Долгосрочные меры:

  • Настроить мониторинг использования inodes (например, в Prometheus с алертами в Alertmanager).
  • Внедрить политики ротации и очистки логов (logrotate).
  • Если проблема системная — рассмотреть пересоздание файловой системы с большим числом inodes или добавление нового диска с последующим переносом данных.