Guest migration between hosts.
Move guests from one host to another.
Contact Information
- Owner
- 
Fedora Infrastructure Team 
- Contact
- 
#fedora-admin, sysadmin-main 
- Location
- 
RDU3, Tummy, ibiblio, Telia, OSUOSL 
- Servers
- 
All xen servers, kvm/libvirt servers. 
- Purpose
- 
Migrate guests 
How to do it
- 
Schedule outage time if any. This will need to be long enough to copy the data from one host to another, so will depend on guest disk size. 
- 
Turn off monitoring in nagios 
- 
On new host create disk space for server: lvcreate -n app03 -L 32G vg_guests 
- 
prepare old guest for migration: - 
if system is xen, install a regular kernel 
- 
look for entries for xenblk and hvc0 in /etc files 
 
- 
- 
Shutdown the guest. 
- 
virsh dumpxml guestname > guest.xml 
- 
Copy guest.xml to the new machine. You will need to make various edits depending on if the system was originally xen or such. I normally need to compare an existing xml on the target system and the one we dumped out to make up the differences. 
- 
Define the guest on the new machine: 
virsh define guest.xml
Depending on the changes in the xml this may not work and you will need
to make many manual changes plus copy the guest.xml to
/etc/libvirtd/qemu and do a /sbin/service libvirtd restart
- 
Insert iptables rule for nc transfer: iptables -I INPUT -s <source host> -m tcp -p tcp --dport 11111 -j ACCEPT 
- 
On the destination host: nc -l 11111 | dd of=/dev/mapper/<guest-partition> 
- 
On the source host: dd if=/dev/mapper/guest-partition | nc <desthost> 11111 Wait for the copy to finish. You can do the following to track how far something has gone by finding the dd pid and then sending a 'kill -USR1' to it. 
- 
start the guest on the new host: ``virsh start guest`` 
- 
To ensure that the new vm starts automatically after boot run: 
virsh autostart guest
- 
On the source host, rename storage and undefine guest so it’s not started. 
- 
In ansible change the host_vars to reflect the new host 
Want to help? Learn how to contribute to Fedora Docs ›