SystemdDoctor
служба не работает mongodb данные права

MongoDB: Unable to lock file mongod.lock

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

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

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

  1. Остался файл блокировки от аварийного завершения

    MongoDB создаёт файл при старте и удаляет при корректной остановке. Аварийное завершение оставляет его на месте.

  2. Каталог данных принадлежит не пользователю службы

    После распаковки копии под root файлы недоступны пользователю mongodb, и захватить блокировку он не может.

  3. Два экземпляра на одном каталоге данных

    Попытка запустить второй mongod на тех же данных всегда заканчивается этой ошибкой — и это защита от порчи данных.

Диагностика

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

Точное сообщение о блокировке и правах.

sudo tail -40 /var/log/mongodb/mongod.log

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

pgrep -a mongod

Владелец каталога данных.

sudo ls -ld /var/lib/mongodb

Решение

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

1. Остался файл блокировки от аварийного завершения
Почему происходит
MongoDB создаёт файл при старте и удаляет при корректной остановке. Аварийное завершение оставляет его на месте.
Как проверить
Убедитесь, что процессов нет, и посмотрите файл.
pgrep -a mongod
sudo ls -l /var/lib/mongodb/mongod.lock
Как исправить
При отсутствии процессов удалите файл блокировки и запустите службу. При работающем процессе удалять нельзя.
sudo rm /var/lib/mongodb/mongod.lock && sudo systemctl start mongod
2. Каталог данных принадлежит не пользователю службы
Почему происходит
После распаковки копии под root файлы недоступны пользователю mongodb, и захватить блокировку он не может.
Как проверить
Посмотрите владельца.
sudo ls -ld /var/lib/mongodb && sudo ls -l /var/lib/mongodb | head
Как исправить
Смените владельца каталога данных рекурсивно на пользователя службы и запустите mongod заново.
sudo chown -R mongodb:mongodb /var/lib/mongodb
3. Два экземпляра на одном каталоге данных
Почему происходит
Попытка запустить второй mongod на тех же данных всегда заканчивается этой ошибкой — и это защита от порчи данных.
Как проверить
Посмотрите процессы и их ключи.
pgrep -a mongod
Как исправить
Оставьте один экземпляр на каталог данных. Для второго нужен свой каталог и свой порт.

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

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

× mongod.service - MongoDB Database Server
     Active: failed (Result: exit-code) since Mon 2026-09-15 20:02:41 MSK; 2s ago

mongod[5000]: {"s":"E","c":"STORAGE","msg":"Unable to lock the lock file","attr":{"path":"/var/lib/mongodb/mongod.lock","reason":"Resource temporarily unavailable"}}
mongod[5000]: {"s":"F","c":"STORAGE","msg":"Failed to start up WiredTiger"}

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

Где встречается чаще всего

Источники

  • Документация MongoDB: устранение неполадок запуска документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено принудительным завершением mongod с оставшимся файлом блокировки.
    собственная проверка, systemd 255
    сверено 15 сентября 2026