Что нового

Proxmox VE: ошибка VM is locked (backup) после остановки резервного копирования

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)

то действую следующим образом.

  1. Проверяю наличие lock:

    Bash:
    qm config 122 | grep lock
  2. Проверяю, что backup действительно больше не работает:

    Bash:
    ps aux | grep '[v]zdump'
  3. Если процесса нет, снимаю блокировку:

    Bash:
    qm unlock 122
  4. Проверяю результат:

    Bash:
    qm config 122 | grep lock
  5. На PBS смотрю каталог резервных копий виртуальной машины:

    Bash:
    ls -lah /mnt/datastore/home/vm/122/
  6. Сопоставляю время неудачного backup с временем snapshot с учётом UTC.
  7. При необходимости проверяю наличие manifest:

    Bash:
    find /mnt/datastore/home/vm/122/ \
      -maxdepth 2 -type f \
      -name 'index.json.blob' \
      -printf '%h\n' | sort
  8. Если незавершённого 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 я не трогаю.

1786558370806.png
Об авторе
Guru
Василий, cистемный админ /gnu/linux/windows/macos/mikrotik/troubleshooter, создатель сайта
Интересуюсь всем что делает инфраструктуру быстрой и надёжной
Открыт к общению и проектам, написать мне можно через форму или в личном сообщении

❗ Если есть пожелания по обзору какого-либо вопроса не представленного на сайте - пиши в комментариях

Комментарии

Нет комментариев для отображения.

Информация о статье

Автор
Guru
Время чтения статьи
4 мин чтения
Просмотры
15
Посл. обновление

Ещё в Proxmox Backup

Ещё от Guru

Поделиться этой статьёй

Назад
Верх