Привет! Пытаюсь использовать qemu QMP команду drive-mirror для лайв-восстановления удалённого NBD устройства qcow2 образа на мой локальный PVE VM. Шаги восстановления отображаются как успешно выполненные, но в VM файл выглядит так же, как и до восстановления. Но если я монтирую VM qcow2 с помощью qemu-nbd, то файл восстановления отображается корректно. Что я могу упускать? Кэш файловой системы VM не обновляется? Есть ли у Proxmox VM кэш или что-то подобное? Шаги описаны ниже:
```
// 1. Подключиться и смонтировать NBD на /dev/nbd0
qemu-nbd --connect=/dev/nbd0 --image-opts \
'driver=nbd,host=172.17.34.43,port=10809,export=hdp-restore'
// 2. QMP execute add NBD block command
{
"execute": "blockdev-add",
"arguments": {
"node-name": "remote_disk",
"driver": "qcow2",
"file": {
"driver": "host_device",
"filename": "/dev/nbd0"
}
}
}
3. Mirror на диск VM
{
"execute": "drive-mirror",
"arguments": {
"device": "remote_disk",
"target": "drive-scsi0",
"sync": "full",
"format": "qcow2",
"job-id": "restore-job2"
}
}
// Finalize
// The drive-mirror job is in a pending/ready state
{
"execute": "block-job-complete",
"arguments": {
"device": "restore-job2"
}
}
{ "execute": "quit" }
```
Я выполнял эти команды в работающей VM. Однако, если я останавливаю VM, удаляю диск VM и использую команду qemu-convert
```
qemu-img convert -O qcow2 /dev/nbd0 /mnt/pve/NAS/images/100/vm-100-disk-0.qcow2
```
и запускаю VM, то файл восстановления отображается корректно. Спасибо.
```
// 1. Подключиться и смонтировать NBD на /dev/nbd0
qemu-nbd --connect=/dev/nbd0 --image-opts \
'driver=nbd,host=172.17.34.43,port=10809,export=hdp-restore'
// 2. QMP execute add NBD block command
{
"execute": "blockdev-add",
"arguments": {
"node-name": "remote_disk",
"driver": "qcow2",
"file": {
"driver": "host_device",
"filename": "/dev/nbd0"
}
}
}
3. Mirror на диск VM
{
"execute": "drive-mirror",
"arguments": {
"device": "remote_disk",
"target": "drive-scsi0",
"sync": "full",
"format": "qcow2",
"job-id": "restore-job2"
}
}
// Finalize
// The drive-mirror job is in a pending/ready state
{
"execute": "block-job-complete",
"arguments": {
"device": "restore-job2"
}
}
{ "execute": "quit" }
```
Я выполнял эти команды в работающей VM. Однако, если я останавливаю VM, удаляю диск VM и использую команду qemu-convert
```
qemu-img convert -O qcow2 /dev/nbd0 /mnt/pve/NAS/images/100/vm-100-disk-0.qcow2
```
и запускаю VM, то файл восстановления отображается корректно. Спасибо.
