I am pretty sure I know the answer, but is there any way to do this gracefully, i.e. within the confines of the oVirt API? This is on an iSCSI storage domain. My understanding and further research suggest no, but I wanted to ask before we endeavor on a major overhaul of a production system that some one setup without knowing the better of to the 2 for such use.
I am very familiar with the underlying systems (LVM, KVM, etc.) and would appreciate any suggested hacks. So far, here is what I have come up with:
Sure to work: Setup a new VM with preallocated drives. Boot both VMs off of a live virtual CD. Use cat/pv and nc (netcat) to read directly from the block devices on one and write directly to the block devices on the other. Reboot the new VM from the internal disks. Tweak MAC addresses along the way so the new VM gets those of the old. The down side is the down time, but we can probably swallow it if we have to. Any other risks?
Might work: Create a new VM. Identify the logical volumes (LVs) are assigned for that block devices used by the new and the old. Log into the SPM and read directly from the old LVs to the new. This is similar to that above, but I expect I need to run the data through some kind of qcow2-to-raw conversion process to make this work. Similar down sides to the above, but maybe less so? Thoughts?
Another thought I had was to just write zeros to the empty space on the block devices, from inside the guest OS, until the full allocation is achieved. The down side is potential impact on performance of the system while it is filling up and for the (hopefully) very short time the file system is full before an rm of the zeros file kicks in. Also we would still have qcow2 underneath, so would it still add overhead, or does that only apply when it grows? Any other down sides to this?
Thanks in advance for your thoughts and consideration.