Migrating physical machines to oVirt with relax-and-recover (p2v using rear)
Relax-and-recover offers a fairly easy way to migrate physical (UNIX) machines to a virtualized environment.
Preflight checks and todos...
- The kernel on the source machine must support the new (virtio) devices.
- Clean up your system (logs, temp files, database cache, session data, etc.).
- You'll need an ISO storage domain and a working NFS server with a share for backup files (on your oVirt server).
- Check the gnu parted manual (especially the mkpart commands).
HOWTO...
- Install REAR (avaiable in package repos), e.g.: yum install rear
-
Edit rear config (usually in /etc/rear/local.conf) and specify (for example)
BACKUP=NETFS
BACKUP_URL=nfs://your-nfs-server/backup-dir/
BACKUP_PROG_EXCLUDE=( "${BACKUP_PROG_EXCLUDE[@]}" "dirs you want to exclude" ) -
See what rear knows about your system
read dump | less -
Start the backup
rear -v mkbackup - Copy or symlink the ISO file (rear-hostname.iso) from the NFS share to the oVirt ISO domain
- Create a blank virtual machine with a big-enough disk image
- Start the VM with run-once and assign the rear ISO as first bootable device
-
Log in as root and start the rear recovery
You need to map the original drive (e.g. sda) to the virtual drive (vda).
If you shrink the original disk, you may also need to specify partition sizes manually.
Editing the diskrestore script is the easy way to fix mapping problems (see parted and mkfs lines). - Check the results (log file and mounted filesystems)
- Reboot the machine from the hard drive
- The first boot may cause kernel panic (see below) or could take a long time due to hardware changes, SELinux relabeling, etc.
Problems and solutions
Moving to a smaller/different disk layout
Don't waste much time with manually specifying the disklayout.conf. Edit the diskrestore script during recovery instead. Parted has quite user friendly commands like:
parted -s /dev/vda mkpart primary 64s 100MiB # this is for /boot parted -s /dev/vda mkpart primary 100MiB 1GiB # swap parted -s /dev/vda mkpart primary 1GiB 100% # the rest is /
Loosing network connection during recover
I had trouble with the virtio network driver. Sometimes it drops the connection. If this happens pause the restore process with CTRL+Z then
rmmod virtio_net modprobe virtio_net dhclient -r dhclient df # waits until the NFS mount is OK fg # continues the recovery process
It might be a good idea to avoid these problems by dropping virtio net and using the rtl8139 driver (oVirt: VM: edit network interfaces).
Fixing "no root device" kernel panic
If your system doesn't boot (kernel panic) due to wrong/missing root device then check grub, fstab and preloaded drivers in initrd. Boot it again with the rescue cd, mount your new partitions (e.g. at /mnt), then:
chroot /mnt ; su - # now you have a working shell in your new filesystem vi /etc/fstab /etc/grub.cfg mkinitrd --preload virtio --preload virtio_pci --preload virtio_ring \ --preload virtio_blk --preload virtio_net --omit-scsi-modules \ --omit-raid-modules --without-multipath --without-dmraid # you may also consider --preload virtio_console --preload virtio_balloon --omit-lvm-modules grub-install /dev/vda
SELinux troubles
Since rear stores your files in a tar archive you may loose selinux labels.
You'll need to recreate them manually using semanage or chcon.
Symlinks can cause trouble during this, so you may want to use the -h flag.
- Mészáros Tamás's blog
- Login to post comments