[libvirt] Block-migrate

Ruben Kerkhof ruben at rubenkerkhof.com
Wed Aug 11 12:22:54 UTC 2010


Hi Daniel,

On Wed, Aug 11, 2010 at 14:16, Daniel P. Berrange <berrange at redhat.com> wrote:
> On Sat, Aug 07, 2010 at 03:55:10PM +0200, Ruben Kerkhof wrote:
>> I've been playing with the new block-migrate feature, but am unable to
>> get it to work.
>>
>> [root at src ~]# virsh migrate --live --p2p  --tunnelled
>> --copy-storage-all 4c5c75b9-decc-41c9-9296-20ca5bd5c355
>> qemu://dst/system
>> error: Unknown failure
>>
>> /var/log/libvirt/qemu/4c5c75b9-decc-41c9-9296-20ca5bd5c355.log on the
>> destination host shows:
>>
>> bind(unix:/var/run/libvirt/qemu/qemu.tunnelmigrate.dest.4c5c75b9-decc-41c9-9296-20ca5bd5c355):
>> Permission denied
>> Migration failed. Exit code
>> unix:/var/run/libvirt/qemu/qemu.tunnelmigrate.dest.4c5c75b9-decc-41c9-9296-20ca5bd5c355(-22),
>> exiting
>>
>> It seems that qemu is not able to write to that location.
>>
>> [root at dst qemu]# ls -ld /var/run/libvirt/qemu/
>> drwx------. 2 root root 4096 Aug  7 15:40 /var/run/libvirt/qemu/
>>
>> As a workaround I gave qemu write permission, and now the block migrate starts.
>
> Did the disk image files exist on the target before migration started ?
> If not, then this is going to be falling foul of our security drivers
> which prevent QEMU creating new files itself.

I'm working with raw lvs and created them on the destination before
starting the migration.

> Also, a straw poll of people at the KVM forum yesterday determined that no
> one had ever got  block migration to work, so it might be just broken in
> QEMU
>
> Daniel

Actually, I've got it working now, with the --direct option and the
--p2p --direct option.
The tunneled method fails though. I'm trying to debug this now.

The first thing which strikes me as odd is in the
qemuMonitorTextMigrate function:

1173        if (qemuMonitorCommand(mon, cmd, &info) < 0) {
(gdb) p cmd
$4 = 0x7fffdc0e6ef0 "migrate  -d
-b\"unix:/var/run/libvirt/qemu/qemu.tunnelmigrate.src.4c5c75b9-decc-41c9-9296-20ca5bd5c355\""
(gdb) n
1180        if (strstr(info, "fail") != NULL) {
(gdb) n
1181            qemuReportError(VIR_ERR_OPERATION_FAILED,
(gdb) p info
$5 = 0x7fffe8001210 "migration failed\r\n"

Not sure if there's supposed to be a space between the migrate and the
-d option, and no space after the -b.

Regards,

Ruben




More information about the libvir-list mailing list