Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры2

Свободные гигабайты есть, а файл не создаётся: проверяем inode

Разбираем ситуацию, когда Linux сообщает об отсутствии места при свободном диске: как проверить inode и найти каталоги с большим количеством файлов.

Органайзер с множеством мелких электронных креплений
В этой статье

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

Проверьте тот путь, где возникает ошибка

Инструкция подходит для Linux с GNU Coreutils. В примерах используется /var. Подставьте каталог, в котором приложение не может создать файл: проверка домашней директории не заменяет проверку отдельного тома с почтой или кэшем.

df -h /var

df -i /var

Первая команда показывает блоки данных, вторая — inode. Смотрите на доступное количество и долю использования. Некоторые файловые системы управляют inode иначе и не показывают привычный фиксированный предел. Поэтому прочерк или необычные значения нужно разбирать с учётом типа тома, а не считать доказательством исправности.

Ищите количество, а не только размер

Большой видеофайл и миллион маленьких файлов создают разную нагрузку на служебные структуры. Для поиска ветви с большим числом записей GNU du умеет считать inode:

du --inodes -x -d1 /var

Проверка ограничена одной файловой системой и выводит первый уровень каталогов. Затем можно повторить её внутри подозрительной ветви. Обход каталога с огромным числом файлов способен занять время и нагрузить хранилище; не запускайте его циклически каждую секунду.

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

Типичный сценарий

Предположим, приложение каждый раз создаёт новый файл сессии и никогда не удаляет истёкшие. Общий размер остаётся умеренным, но количество объектов непрерывно растёт. Удаление нескольких крупных архивов освободит блоки, однако почти не изменит ситуацию с inode.

Другой пример — почтовая очередь. Здесь массовое удаление файлов может уничтожить письма, которые ещё должны быть доставлены. Сначала нужно определить назначение каталога и штатный механизм обработки просроченных объектов. Название «временный» не делает данные автоматически ненужными.

Как проверить исправление

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

Затем сравните показатели через рабочий интервал. Если свободные записи снова быстро исчезают, необходимо исправлять срок хранения или обработку очереди. Увеличение диска не является универсальным решением: возможность увеличить число inode зависит от файловой системы и способа её расширения.

Не меняйте лимиты и не запускайте рекурсивное удаление по одному графику. Для устойчивого результата нужен понятный ответ: какие файлы создаются, сколько они должны храниться и кто контролирует завершение очистки. В мониторинге полезно наблюдать отдельно за свободными блоками и свободными inode — эти два показателя отвечают на разные вопросы.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.