iLoveMoney1,
libvirt это умеет. Например, в virt-manager есть кнопка "Migrate". Или скриптом-балансировщиком можно эту команду дёргать (virsh вроде).
Я в своё время настроил живую миграцию тыкая "Migrate" и читая ошибки, там всё доходчиво. Лично мне пришлось две ошибки фиксить:
1. доустановить netcat
2. разместить диск виртуалки на общем хранилище. Это значит или заюзать или небыстрый NFS (дополнительно
придётся поработать над отказоустойчивостью), или собрать DRBD (который ни хрена не масштабируется), или городить GFS (не пробовал).
Делал миграцию для тестов, работало классно, оказалось не нужно. Но, возможно, при этом у меня был Xen, потому что KVM я юзал тоже только на тестах.