接下来,将分别介绍如何使用 virt-v2v 工具迁移 VmwareESXi 上的 RHEL 虚拟机和 Windows 7 虚拟机到 KVM 主机。

在迁移前的环境设置如下:我们采用的 KVM 主机安装最新的 RHEL6.2操作系统。这样,最基本的支持 KVM 虚拟机的软件 qemu-kvm、libvirt、virt-manager 和 virt-v2v 工具都在发行版中安装了。

[root@localhost ~]# rpm -qaqemu-kvm
 qemu-kvm-0.12.1.2-2.160.el6.x86_64
 [root@localhost ~]# rpm -qalibvirt
 libvirt-0.8.7-18.el6.x86_64
 [root@localhost ~]# rpm -qavirt-manager
 virt-manager-0.8.6-4.el6.noarch
 [root@localhost ~]# rpm -qa virt-v2v
 virt-v2v-0.7.1-3.el6.x86_64

为了使 virt-v2v 工具能够自动化的迁移 VMware ESX 虚拟机,尽量减少手动干预,还需要在 KVM 主机上做一些设置:

1. 安装支持 Windows 虚拟机迁移的软件。

对于 Windows 虚拟机的迁移需要安装 libguestfs-winsupport 包来支持 NTFS 文件系统和 virtio-win 包来支持 Windows para-virtualized 存储和网络设备驱动。

安装 Windows 虚拟机迁移的支持包

[root@victory4v2v]#rpm -ivh libguestfs-winsupport-1.0-7.el6.x86_64.rpm  \
 virtio-win-1.2.0-1.el6.noarch.rpm
 Preparing... ########################################### [100%]
 1:virtio-win########################################### [ 50%]
 2:libguestfs-winsupport ########################################### [100%]

2. 创建 KVM 主机存储域

virt-v2v 在迁移虚拟机的过程中,需要拷贝被迁移虚拟机到 KVM 主机预先定义的存储池中。存储池可以用 libvirt 工具创建。最简单的方法就是使用 virt-manager 来创建新的存储池。本文中创建了一个文件目录类型的存储池,位置在 KVM 主机系统的 /home/images/migration 目录。

使用 virt-manager 创建本地存储域

 

3. 创建 KVM 主机网络接口

虚拟机在迁移之后将连接 KVM 主机网络, 因此主机必须有一个与之相匹配的网络接口,比如说网桥。Linux 系统上有很多工具可以创建网桥,其中 RHEL6.2 发行版上的 virt-manager 已经支持创建和管理网桥。本文创建了网桥 br0,并且绑定在 eth0 的接口上,具体配置如下图。

 

4. 创建配置文件 virt-v2v.conf

在 virt-v2v.conf 文件中设置 virt-v2v 迁移的规则,包括网络接口迁移后的映射,迁移的方式,存储的位置,输出的格式等等。这些规则也能以命令行参数的方式输入,如 - - network,-o,-os,-of 等。