(1) Invoke QEMU with QMP server: ----------------------------------------------------------------------- $ cat qemu-invoc-qmp.sh #!/bin/bash /usr/bin/qemu-system-x86_64 -machine accel=kvm -name f20-orig -S -machine pc-i440fx-2.1,accel=kvm,usb=off -cpu SandyBridge -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid d2d76c94-c6bd-4ecc-8185-1bcb4a4bce20 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/f20-orig.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive file=/export/disk-image-chains-test/f20-orig.qcow2,if=none,id=drive-ide0-0-0,format=qcow2 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive file=/export/disk-image-chains-test/disk2.qcow2,if=none,id=drive-virtio-disk1,format=raw,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x8,drive=drive-virtio-disk1,id=virtio-disk1 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5900,addr=127.0.0.1,disable-ticketing,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x2 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on -qmp tcp:localhost:4444,server $ ./qemu-invoc-qmp.sh char device redirected to /dev/pts/39 (label charserial0) QEMU waiting for connection on: tcp:127.0.0.1:4444,server ----------------------------------------------------------------------- (2) Invoke drive-backup via QMP command: ----------------------------------------------------------------------- $ cat invoke-drive-backup-via-qmp.sh #!/bin/bash #set -x # Test QMP drive-backup exec 3<>/dev/tcp/localhost/4444 echo -e "{ 'execute': 'qmp_capabilities' }" >&3 read response <&3 echo $response echo -e "{ 'execute': 'drive-backup', 'arguments': { 'device': 'drive-virtio-disk1', 'sync': 'full', 'target': '/var/lib/libvirt/images/backup-copy.qcow2', 'mode': 'absolute-paths', 'format': 'qcow2' } }" >&3 read response <&3 echo $response $ sudo ./drive-backup-test-via-qmp.sh {"QMP": {"version": {"qemu": {"micro": 2, "minor": 1, "major": 2}, "package": ""}, "capabilities": []}} {"return": {}} ----------------------------------------------------------------------- (3) Result: ----------------------------------------------------------------------- $ sudo ./qemu-invoc-qmp.sh char device redirected to /dev/pts/39 (label charserial0) QEMU waiting for connection on: tcp:127.0.0.1:4444,server Formatting '/var/lib/libvirt/images/backup-copy.qcow2', fmt=qcow2 size=18677760 encryption=off cluster_size=65536 lazy_refcounts=off $ file /var/lib/libvirt/images/backup-copy.qcow2 /var/lib/libvirt/images/backup-copy.qcow2: QEMU QCOW Image (v3), 2147483648 bytes -----------------------------------------------------------------------