I’ve had a hard time finding any guides on this. Always they suggest using dd to copy disk to virtual image file. Which works fine I’m sure, but I wondered why not just use qemu-img convert command directly. Why the two step conversion? So I did run into a post where someone asked the same thing, and sure enough, you can do this!
Here’s what I did, as an example. In my case I’m converting a ZFS zvol to a raw img file. But I don’t see why you couldn’t use /dev/sdc directly, rather than the zvol device. (obviously you either need to be in the directory you want the img file or use the full path!)
qemu-img convert -p -S 512 /dev/zvol/vpoolg1/VM/vm-1/sys/disk/tleweb/linvol -O raw tlweb-osvol.img
So in my example, I have:
-p to show progress
-S 512 for consecutive bytes to count for sparse
/dev/path/to/disk/or/zvol/device
-O raw imgfile.img – the output file
Easy! And very fast for me!