MongoDB: Unable to lock file mongod.lock
Файл блокировки в каталоге данных не даёт запустить второй экземпляр MongoDB. Если процесса нет, а файл остался — это след аварийного завершения. Второй частый случай — каталог данных принадлежит root после восстановления из копии.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Остался файл блокировки от аварийного завершения
MongoDB создаёт файл при старте и удаляет при корректной остановке. Аварийное завершение оставляет его на месте.
-
Каталог данных принадлежит не пользователю службы
После распаковки копии под root файлы недоступны пользователю mongodb, и захватить блокировку он не может.
-
Два экземпляра на одном каталоге данных
Попытка запустить второй mongod на тех же данных всегда заканчивается этой ошибкой — и это защита от порчи данных.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Точное сообщение о блокировке и правах.
sudo tail -40 /var/log/mongodb/mongod.logЕсть ли работающий процесс: от этого зависит, можно ли удалять файл блокировки.
pgrep -a mongodВладелец каталога данных.
sudo ls -ld /var/lib/mongodbРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- MongoDB создаёт файл при старте и удаляет при корректной остановке. Аварийное завершение оставляет его на месте.
- Как проверить
-
Убедитесь, что процессов нет, и посмотрите файл.
pgrep -a mongod sudo ls -l /var/lib/mongodb/mongod.lock
- Как исправить
-
При отсутствии процессов удалите файл блокировки и запустите службу. При работающем процессе удалять нельзя.
sudo rm /var/lib/mongodb/mongod.lock && sudo systemctl start mongod
- Почему происходит
- После распаковки копии под root файлы недоступны пользователю mongodb, и захватить блокировку он не может.
- Как проверить
-
Посмотрите владельца.
sudo ls -ld /var/lib/mongodb && sudo ls -l /var/lib/mongodb | head
- Как исправить
-
Смените владельца каталога данных рекурсивно на пользователя службы и запустите mongod заново.
sudo chown -R mongodb:mongodb /var/lib/mongodb
- Почему происходит
- Попытка запустить второй 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"}
Связанные ошибки
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Interactive authentication required при управлении службой systemctl требует аутентификации: обращение от непривилегированного пользователя через polkit. Как разрешить точечно.
- MongoDB: NotWritablePrimary при записи Запись отклоняется: узел не является основным в наборе репликации. Разбор выборов и состояния узлов.
Где встречается чаще всего
Источники
- Документация MongoDB: устранение неполадок запуска
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено принудительным завершением mongod с оставшимся файлом блокировки.