Файловая система — Примеры

Пример 1 — Полный корневой том, чей крупнейший файл уже пропал

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

таблица монтирований (иллюстративные цифры)
точка монтирования   размер  занято  свободно
/                    40G     40G     0
/var/lib/data        200G    61G     139G
крупнейший именованный файл под /: 2G

Решение

причина: процесс всё ещё держит удалённый файл открытым; имя пропало, блоки — нет
проверка: выведите открытые файлы и сопоставьте удалённую запись с процессом, пишущим журнал
исправление без остановки: обрежьте файл на месте, что вернёт блоки
исправление, если перезапуск допустим: перезапустите службу, чтобы она закрыла и открыла файл заново

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

Пример 2 — Место есть, а файл всё равно не создаётся

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

том: 40G всего, 18G свободно
попытка создать файл: no space left on device
речь о каталоге: кэш с миллионами крошечных файлов сессий

Решение

причина:  в файловой системе кончились inode, а не байты; каждый файл израсходовал один
проверка: сравните использование inode с использованием байтов на этом монтировании
действие: удалите файлы, чьё назначение можете назвать, начиная со старых, и поставьте это в расписание
примечание: удаление каталога с миллионами записей медленно; каждая развязывается

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