The process is very simple on the Xen level (not sure about KVM but I assume it is the same). I propose a documentation page be written on the topic.
Jamie or Andrey, could you shed some light on what Cloudmin-specific files need to be edited so that Cloudmin is fully aware that the VM has been moved to LVM?
Anyway, here are the steps:
Shut down the VM.
Just create logical volumes equal to or larger than the disk files you currently use.
DD the contents over:
dd if=/servers/server1.img of=/dev/vg0/server1_root
dd if=/servers/server1.swap of=/dev/vg0/server1_swap
Change the .cfg file for the server, to change the following:
disk = ['file:/servers/server1.img,xvda1,w','file:/servers/server1.swap,xvda2,w']
disk = ['phy:/dev/vg0/server1_root,xvda1,w','phy:/dev/vg0/server1_swap,xvda2,w']
That's it! And if you created LV's larger than the original disk images, you'll also have to do an online-resize (expand) of the Ext4 filesystem to make the extra space usable. This process is supported on modern kernels (I think starting with 2.6).
But the Cloudmin steps after that I'm not as familiar with. You'd definitely have to delete and re-add any Scheduled Backups in Cloudmin (and delete the associated /etc/webmin/server-manager/backuplogs entries).
You probably also have to edit some config files manually in Cloudmin.