Файловая система — Примеры
Пример 1 — Полный корневой том, чей крупнейший файл уже пропал
Корневой том сообщает, что свободного места нет, но крупнейший именованный файл под ним занимает малую часть целого, а удаление большого журнала ничего не изменило. По таблице монтирований определите, что держит место, и два безопасных способа его вернуть.
таблица монтирований (иллюстративные цифры)
точка монтирования размер занято свободно
/ 40G 40G 0
/var/lib/data 200G 61G 139G
крупнейший именованный файл под /: 2G
Решение
причина: процесс всё ещё держит удалённый файл открытым; имя пропало, блоки — нет
проверка: выведите открытые файлы и сопоставьте удалённую запись с процессом, пишущим журнал
исправление без остановки: обрежьте файл на месте, что вернёт блоки
исправление, если перезапуск допустим: перезапустите службу, чтобы она закрыла и открыла файл заново
Удаление имени не освобождает блоки, потому что inode всё ещё удерживается процессом, у которого файл открыт; обрезка на месте возвращает место, не прерывая службу. Каждое монтирование заполняется независимо, поэтому полезное чтение — таблица по монтированиям, а не одна цифра для хоста. Обычная ошибка — продолжать искать большой файл, которого больше нет, или перезапустить службу и потерять состояние, которое объяснило бы, почему журнал был большим.
Пример 2 — Место есть, а файл всё равно не создаётся
Том с гигабайтами свободного места отказывается создавать новый файл. Определите причину, проверку, которая это доказывает, и безопасный следующий шаг.
том: 40G всего, 18G свободно
попытка создать файл: no space left on device
речь о каталоге: кэш с миллионами крошечных файлов сессий
Решение
причина: в файловой системе кончились inode, а не байты; каждый файл израсходовал один
проверка: сравните использование inode с использованием байтов на этом монтировании
действие: удалите файлы, чьё назначение можете назвать, начиная со старых, и поставьте это в расписание
примечание: удаление каталога с миллионами записей медленно; каждая развязывается
inode расходуются по одному на файл, поэтому кэш из миллионов крошечных файлов исчерпывает таблицу, пока байты ещё свободны. Лекарство — удалить файлы, которые вы можете обоснованно убрать, и поставить эту чистку в расписание, иначе тот же кэш снова заполнит таблицу. Обычная ошибка — добавить хранилища: больше байтов не добавляет inode, и том вернётся в это состояние тем же путём.