Proxmox VE: ошибка «VM is locked (backup)» после остановки резервного копирования
Недавно я столкнулся с простой, но не самой очевидной ситуацией в Proxmox VE.
Я запустил резервное копирование виртуальной машины на Proxmox Backup Server, а затем остановил задачу через веб-интерфейс. После этого при повторной попытке создать backup получил ошибку:
Код:
INFO: starting new backup job: vzdump 122 --node pve --remove 0 --storage vz_h --mode snapshot
INFO: Starting Backup of VM 122 (qemu)
INFO: Backup started at 2026-08-12 20:57:32
INFO: status = running
ERROR: Backup of VM 122 failed - VM is locked (backup)
INFO: Failed at 2026-08-12 20:57:32
INFO: Backup job finished with errors
TASK ERROR: job errors
Главная строка здесь:
Код:
ERROR: Backup of VM 122 failed - VM is locked (backup)
В этой статье я покажу, что означает такая блокировка, как безопасно её снять и как проверить, не остался ли на Proxmox Backup Server незавершённый snapshot.
Почему появляется VM is locked (backup)
Proxmox VE блокирует виртуальную машину на время некоторых операций:
- резервного копирования;
- миграции;
- создания или удаления snapshot;
- клонирования;
- некоторых операций с дисками.
Это необходимо для того, чтобы две конфликтующие операции не выполнялись над одной виртуальной машиной одновременно.
В моём случае backup был остановлен вручную. Сам процесс резервного копирования уже завершился, но у виртуальной машины осталась блокировка:
Код:
lock: backup
Из-за неё Proxmox считал, что над виртуальной машиной всё ещё выполняется резервное копирование.
Проверяю наличие блокировки
Моя виртуальная машина имеет ID 122.
На узле Proxmox VE я выполняю:
Bash:
qm config 122 | grep lock
Если блокировка осталась, получаю примерно такой результат:
Код:
lock: backup
Это подтверждает причину ошибки.
Сначала проверяю, не работает ли backup на самом деле
Сразу выполнять
qm unlock не стоит.Сначала я убеждаюсь, что резервное копирование действительно остановлено и никакой процесс
vzdump сейчас не работает:
Bash:
ps aux | grep '[v]zdump'
Также можно проверить процессы Proxmox Backup:
Bash:
ps aux | grep -E '[v]zdump|[p]roxmox-backup'
Если активного задания резервного копирования моей VM уже нет, блокировку можно снять.
Не стоит выполнять
qm unlock, если настоящий backup виртуальной машины всё ещё работает.Снятие блокировки может позволить запустить другую конфликтующую операцию над VM во время уже выполняющегося резервного копирования.
Снимаю блокировку VM
После того как я убедился, что backup действительно остановлен, выполняю:
Bash:
qm unlock 122
Затем ещё раз проверяю:
Bash:
qm config 122 | grep lock
Если команда ничего не выводит, значит блокировка успешно снята.
Перезагружать виртуальную машину для этого не требуется.
Команда:
Bash:
qm unlock 122
не выключает VM и не удаляет её данные. Она снимает административную блокировку Proxmox.
Проверяю Proxmox Backup Server
После принудительной остановки backup мне также было интересно, не остался ли на PBS незавершённый snapshot.
В моём случае datastore расположен здесь:
Код:
/mnt/datastore/home
А резервные копии VM 122 находятся в:
Код:
/mnt/datastore/home/vm/122/
На сервере PBS я выполняю:
Bash:
ls -lah /mnt/datastore/home/vm/122/
Получаю каталоги примерно такого вида:
Код:
2026-08-10T01:02:13Z
2026-08-11T01:02:09Z
2026-08-12T01:08:40Z
2026-08-12T11:40:45Z
Имена каталогов соответствуют времени создания backup snapshot.
Здесь важно учитывать, что время в имени snapshot указано в UTC.
Сопоставляю время остановленного backup
Мой неудачный backup был запущен:
Код:
2026-08-12 20:57:32
по местному времени UTC+3.
В UTC это примерно:
Код:
2026-08-12 17:57:32Z
Следовательно, если после оборванного задания остался незавершённый snapshot, я ожидал бы увидеть каталог примерно такого вида:
Код:
2026-08-12T17:57:32Z
Но такого каталога на PBS не оказалось.
Это означает, что незавершённый snapshot после остановленного задания уже был удалён.
Ищу только snapshot за нужную дату
Чтобы не просматривать весь список каталогов вручную, можно воспользоваться
find:
Bash:
find /mnt/datastore/home/vm/122/ \
-maxdepth 1 -mindepth 1 -type d \
-name '2026-08-12T*' -printf '%f\n' | sort
В моём случае результат был следующим:
Код:
2026-08-12T01:08:40Z
2026-08-12T11:40:45Z
Snapshot с временем около
17:57 UTC отсутствовал.Следовательно, прерванный backup отдельного каталога после себя не оставил.
Проверяю наличие index.json.blob
Дополнительно я проверил, присутствует ли у существующих backup файл
index.json.blob:
Bash:
find /mnt/datastore/home/vm/122/ \
-maxdepth 2 -type f \
-name 'index.json.blob' \
-printf '%h\n' | sort
В моём случае команда показала существующие snapshot:
Код:
/mnt/datastore/home/vm/122/2026-08-10T01:02:13Z
/mnt/datastore/home/vm/122/2026-08-11T01:02:09Z
/mnt/datastore/home/vm/122/2026-08-12T01:08:40Z
/mnt/datastore/home/vm/122/2026-08-12T11:40:45Z
У существующих резервных копий manifest присутствовал.
Подозрительного незавершённого каталога я не обнаружил.
Не удаляю каталоги PBS через rm
Это особенно важно для новичков.
Если я вижу подозрительный каталог внутри:
Код:
/mnt/datastore/home/vm/
я не удаляю его вручную командой вроде:
Bash:
rm -rf ...
Не стоит вручную удалять содержимое datastore Proxmox Backup Server через
rm -rf.PBS использует дедупликацию и общее хранилище chunks. Удаление backup лучше выполнять штатными средствами Proxmox Backup Server.
Для удаления резервных копий я использую веб-интерфейс PBS либо штатные команды Proxmox Backup Server.
Мой порядок действий при VM is locked (backup)
Если после остановленного backup я получаю:
Код:
VM is locked (backup)
то действую следующим образом.
- Проверяю наличие lock:
Bash:qm config 122 | grep lock - Проверяю, что backup действительно больше не работает:
Bash:ps aux | grep '[v]zdump' - Если процесса нет, снимаю блокировку:
Bash:qm unlock 122 - Проверяю результат:
Bash:qm config 122 | grep lock - На PBS смотрю каталог резервных копий виртуальной машины:
Bash:ls -lah /mnt/datastore/home/vm/122/ - Сопоставляю время неудачного backup с временем snapshot с учётом UTC.
- При необходимости проверяю наличие manifest:
Bash:find /mnt/datastore/home/vm/122/ \ -maxdepth 2 -type f \ -name 'index.json.blob' \ -printf '%h\n' | sort - Если незавершённого snapshot нет, запускаю резервное копирование повторно.
Заключение
В моём случае проблема оказалась не в Proxmox Backup Server и не в повреждённой резервной копии.
После остановки backup осталась обычная блокировка виртуальной машины:
Код:
lock: backup
При этом на PBS незавершённого snapshot уже не было.
Мне достаточно было убедиться, что процесс
vzdump действительно завершён, после чего выполнить:
Bash:
qm unlock 122
и снова запустить резервное копирование.
Для себя я вывел простое правило: если после вручную остановленного backup Proxmox сообщает
VM is locked (backup), сначала я проверяю активные процессы и только после этого снимаю lock.А содержимое datastore Proxmox Backup Server вручную через
rm я не трогаю.