将虚拟机有KVM迁移到Xen的关键是替换掉原先的不带Xen补丁的内核,其次是选择较为合适的grub(较老版本的Xen不支持grub2)。完成以上的两步后,将KVM虚拟机的镜像做成Xen镜像,然后配以Xen虚拟机的配置文件,就能将KVM的虚拟机转化为Xen下的虚拟机了。
安装Xen补丁的内核(以debian 6.0 为例)
安装xen内核
#apt-get install linux-image-2.6.32-5-xen-amd64 xen-linux-system-2.6.32-5-xen-amd64
安装完成后,会在/boot下生成相应的系统内核文件
#ls
config-2.6.32-5-amd64 System.map-2.6.32-5-amd64 vmlinuz-2.6.32-5-xen-amd64
config-2.6.32-5-xen-amd64 initrd.img-2.6.32-5-amd64 System.map-2.6.32-5-xen-amd64 xen-4.0-amd64.gz
grub initrd.img-2.6.32-5-xen-amd64 vmlinuz-2.6.32-5-amd64
卸载grub2安装grub-lagecy
备份grub2
#mv /boot/grub /boot/grub.bak
卸载grub2
#apt-get --purge remove grub-pc grub-common
安装grub-legacy
#apt-get install grub-legacy
重新生成grub
#grub-install /dev/vda
#update-grub
将虚拟机的镜像文件进行转化
转化的过程较为简单,最土的办法就是整个虚拟机的文件全部拷贝。较为高级的办法是将虚拟机的镜像文件做快照,然后将快照中的文件拷贝到Xen虚拟化环境中去。
修改虚拟机的grub和fstab
修改grub中 root项:
修改后类似下面的配置,其中注意root 的配置
default 0
timeout 5
title Debian
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-5-xen-amd64 root=/dev/xvda2 ro
initrd /boot/initrd.img-2.6.32-5-xen-amd64
修改/etc/fstab成如下的形式:
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext3 noatime,nodiratime,errors=remount-ro 0 1
最后检查系统的其它配置没有问题后就能够利用配置文件系统虚拟机了
依照同样的思路也可以将Xen的虚拟机转化为KVM平台下的虚拟机