Как посмотреть количество свободных inode в Linux

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

Ответ

Чтобы проверить количество свободных inode, я использую команду df с ключом -i. Это одна из первых проверок, когда система сообщает «No space left on device», но df -h показывает свободное место — классический случай исчерпания inode из-за миллионов мелких файлов (например, кэша или логов).

Основная команда:

df -i

Вывод показывает по каждой файловой системе:

Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda1      655360 12345 643015    2% /
/dev/sdb1     1310720 980000 330720   75% /var/log
  • Inodes — общее количество inode (максимальное число файлов).
  • IUsed — использовано inode.
  • IFree — свободно inode (это то, что нам нужно).
  • IUse% — процент использования, критично при приближении к 100%.

Проверка конкретной точки монтирования:

df -i /home
df -i /var/log

Автоматизация и скрипты: Для мониторинга или проверки в скриптах можно извлечь только число свободных inode:

df -i / | awk 'NR==2 {print $4}'
# Проверка, что свободных inode больше 1000
if [ $(df -i / | awk 'NR==2 {print $4}') -lt 1000 ]; then
  echo "ВНИМАНИЕ: Мало свободных inode на корневой файловой системе!"
fi

Если inode закончились: Нужно найти директорию с огромным количеством мелких файлов. Помогает команда:

# Показать топ-10 директорий по количеству файлов (может быть долго)
sudo find /mount/point -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -rn | head -10