Ubuntu: Running Out of Space и количество inodes

Одна из причин, почему ваш Ubuntu сервер может сигнализировать, что кончилась память, тогда как её предостаточно — слишком большое количество файлов. Каждый диск в зависимости от размера имеет ограниченное максимальное количество файлов и папок, которые вы можете создать.

Проверить количество используемых inodes можно командой:

root@ec2-consumer:~# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/root        2.5M  2.1M  419K   84% /
devtmpfs         482K   349  482K    1% /dev
tmpfs            484K     5  484K    1% /dev/shm
tmpfs            484K   602  483K    1% /run
tmpfs            484K     4  484K    1% /run/lock
tmpfs            484K    18  484K    1% /sys/fs/cgroup
/dev/loop1         16    16     0  100% /snap/amazon-ssm-agent/4046
/dev/loop5        11K   11K     0  100% /snap/core18/2253
/dev/nvme1n1      25M  462K   25M    2% /var/www
tmpfs            484K    22  484K    1% /run/user/0

Видим 84% около /dev/root — процент очень большой, это свидетельствует о проблеме. Обычно должно быть не больше 50%, а 80% — это верхний предел.

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

Если не знаете, где превышаете лимит по количеству файлов, запустите команду (может занять несколько минут):

du --inodes -d 3 / | sort -n | tail

Быстрое решение

Просто удалите лишние файлы. Это можно сделать по шаблону regexp:

find /tmp -type f -mtime +0 -name 'phrets*' -execdir rm -- '{}' \;

Здесь -mtime +0 фильтрует все файлы, которые были созданы больше суток назад — я не хотел удалять все файлы, так как не был уверен, что библиотека phrets не использует самые свежие для чего-то нужного (хотя они все и были пустыми). Почитайте про значения параметра mtime, чтобы фильтровать как давно созданные файлы, так и недавно.

Долгое решение

Нужно увеличить количество inodes. Это крайне редкое и радикальное решение, которое хорошо описано тут — https://www.ctrl.blog/entry/how-to-all-out-of-inodes.html.

Поделиться
Отправить
2022   aws   bash   inodes   space   ubuntu   диск
Популярное