SystemdDoctor
служба не работает монтирование память

tmpfs заполняется и служба падает

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Размер задан по умолчанию и мал

    Без явного размера временная файловая система получает половину памяти машины, но для /run и подобных каталогов размер обычно меньше.

  2. Служба пишет в память постоянные данные

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

  3. Место занято удалёнными файлами

    Как и на диске, память не освобождается, пока файл держит процесс. Команда покажет занятое место при видимой пустоте каталога.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Занятость временных файловых систем.

df -h /run /tmp /dev/shm

Что занимает место в /run.

sudo du -sh /run/* 2>/dev/null | sort -h | tail

Размеры и использование всех tmpfs.

findmnt -t tmpfs -o TARGET,SIZE,USED

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Размер задан по умолчанию и мал
Почему происходит
Без явного размера временная файловая система получает половину памяти машины, но для /run и подобных каталогов размер обычно меньше.
Как проверить
Посмотрите размеры и занятость.
df -h /run /tmp /dev/shm
findmnt -t tmpfs -o TARGET,SIZE,USED,OPTIONS
Как исправить
Задайте размер явно в записи монтирования или в mount-unit. Для данных, не требующих скорости памяти, лучше обычный каталог на диске.
2. Служба пишет в память постоянные данные
Почему происходит
Данные в такой файловой системе исчезают при перезагрузке и занимают память. Для состояния службы это неподходящее место.
Как проверить
Посмотрите, что и куда пишет служба.
sudo du -sh /run/* 2>/dev/null | sort -h | tail -5
Как исправить
Перенесите постоянные данные в каталог состояния через StateDirectory=: он на диске и переживает перезагрузку.
3. Место занято удалёнными файлами
Почему происходит
Как и на диске, память не освобождается, пока файл держит процесс. Команда покажет занятое место при видимой пустоте каталога.
Как проверить
Найдите удалённые открытые файлы.
sudo lsof +L1 2>/dev/null | grep -E "tmpfs|/run" | head
Как исправить
Перезапустите службу, которая держит файлы.

Пример вывода

Служба заполнила /run данными. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ df -h /run
tmpfs  790M  790M     0 100% /run

myapp[1200]: error: write /run/myapp/queue.dat: no space left on device

Связанные ошибки

Источники

  • systemd.mount(5)
    Параметры временной файловой системы, включая размер.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено записью крупных файлов в /run.
    собственная проверка, systemd 255
    сверено 15 сентября 2026