Hide Forgot
Description of problem: My expectation was that when doing live migration of a virt that has local storage, the migration is considered unsafe and is denied unless --unsafe is used. However, I can migrate my local virt freely and no warning is issued. Please let me know if I've done something wrong or if this is somehow not a bug and feel free to close it if so. Version-Release number of selected component (if applicable): libvirt-0.10.2-60.el6.x86_64 How reproducible: always Steps to Reproduce: 1. create a qemu virt with local storage 2. virsh --connect=qemu:///system migrate --live virt qemu+ssh://destination/system 3. Actual results: virt live migrated, even if on local storage and even if cache != none Expected results: warning about unsafe migration, --unsafe hinted and required to proceed Additional info: <domain type='kvm'> <name>rhel6.5</name> <uuid>95bc351e-fbe8-4403-b19c-e5ea5638409d</uuid> <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>4194304</currentMemory> <vcpu placement='static'>8</vcpu> <os> <type arch='x86_64' machine='rhel6.6.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <cpu mode='custom' match='exact'> <model fallback='allow'>Opteron_G4</model> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='writethrough'/> <source file='/virt/rhel6.5.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <interface type='network'> <mac address='52:54:00:f2:f9:3c'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> <video> <model type='cirrus' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> </domain>
The migration with cache != none is only unsafe with NFS, in which case the migration may cause data corruption. Not to mention detecting local storage is impossible since sharing may be done on block layer rather than filesystem layer. Thus we only require --unsafe if we are 100% sure the migration is not safe.