从 RHEL6(Red Hat Enterprise Linux 6)开始,RHEL 发行版中包含了 Red Hat 公司开发的 virt-v2v 工具。它是由 perl 语言编写的脚本,可以自动化的将创建在 Xen,KVM 和 VMware ESX 上的虚拟机拷贝到 virt-v2v 的主机,并且自动的更改配置,使之能够被 libvirt 进行管理。目前,virt-v2v 支持静态迁移下列虚拟机:RHEL4、RHEL5, RHEL6,Windows XP,Windows Vista, Windows 7, Windows Server 2003 和 Windows Server 2008。virt-v2v 迁移 VMware/Xen/KVM 虚拟机示意图如下所示:
接下来,将分别介绍如何使用 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 等。