SystemdDoctor
служба не работает ключи квоты контейнеры

status=237/KEYRING в systemd

Код 237/KEYRING значит, что systemd не смог создать для службы отдельную связку ключей ядра. Она нужна механизму учётных данных и части программ, работающих с ключами. Причины — квоты ядра или ограничения контейнера.

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

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

  1. Исчерпана квота на связки ключей

    У ядра есть пределы на число ключей и байтов у пользователя. При множестве служб от одного пользователя квота заканчивается, и новую связку создать нельзя.

  2. Окружение не позволяет создавать связки ключей

    В части контейнеров работа со связками ключей ядра запрещена, и шаг не проходит независимо от квот.

  3. Указан KeyringMode=, несовместимый с задачей

    При KeyringMode=shared связка общая для всех служб пользователя, при private — отдельная. Смена режима меняет и поведение квот.

Диагностика

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

Показывает шаг KEYRING и причину.

journalctl -xeu myapp.service --no-pager -n 20

Текущее использование связок ключей по пользователям — сразу видно упор в квоту.

sudo cat /proc/key-users

Решение

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

1. Исчерпана квота на связки ключей
Почему происходит
У ядра есть пределы на число ключей и байтов у пользователя. При множестве служб от одного пользователя квота заканчивается, и новую связку создать нельзя.
Как проверить
Посмотрите действующие пределы.
cat /proc/sys/kernel/keys/maxkeys /proc/sys/kernel/keys/maxbytes
sudo cat /proc/key-users
Как исправить
Поднимите пределы через sysctl, например kernel.keys.maxkeys=2000, и закрепите это в /etc/sysctl.d.
sudo sysctl -w kernel.keys.maxkeys=2000
2. Окружение не позволяет создавать связки ключей
Почему происходит
В части контейнеров работа со связками ключей ядра запрещена, и шаг не проходит независимо от квот.
Как проверить
Определите окружение.
systemd-detect-virt
journalctl -xeu myapp.service -n 20 --no-pager
Как исправить
Запускайте службу вне такого контейнера либо разрешите работу с ключами в его настройках.
3. Указан KeyringMode=, несовместимый с задачей
Почему происходит
При KeyringMode=shared связка общая для всех служб пользователя, при private — отдельная. Смена режима меняет и поведение квот.
Как проверить
Посмотрите значение параметра.
systemctl show myapp.service -p KeyringMode
Как исправить
Оставьте значение по умолчанию (private для системных служб), если нет явной причины его менять.

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

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

× myapp.service - My application
     Active: failed (Result: exit-code) since Mon 2026-09-15 09:02:33 MSK; 1s ago
    Process: 4200 ExecStart=/usr/local/bin/myapp (code=exited, status=237/KEYRING)

systemd[4200]: myapp.service: Failed at step KEYRING spawning /usr/local/bin/myapp: Disk quota exceeded

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

Источники

  • systemd.exec(5)
    237 EXIT_KEYRING: не удалось подготовить связку ключей ядра.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено при заниженном kernel.keys.maxkeys.
    собственная проверка, systemd 255
    сверено 15 сентября 2026