作者:用户19910071 | 来源:互联网 | 2014-05-27 21:08
有关虚拟机间的动态迁移,我在虚拟机迁移技术漫谈对它进行大概的介绍,现在结合今天我自身的实践,来具体解释下迁移的步骤;1,环境准备1)共享存储-NFS:理论上来说,需要迁移的虚拟机可以不适用共享存储,但是如果不用共享存储的话,在迁移的过程中就需
有关虚拟机间的动态迁移,我在虚拟机迁移技术漫谈 对它进行大概的介绍,现在结合今天我自身的实践,来具体解释下迁移的步骤;
1,环境准备
1) 共享存储-NFS:
理论上来说,需要迁移的虚拟机可以不适用共享存储,但是如果不用共享存储的话,在迁移的过程中就需要对镜像进行大量的拷贝,这个是非常耗时的,而且在大量的集群的情况下,基本上镜像都是存放在分布式的共享存储中,一是方便管理,一是为虚拟机的动态迁移做准备,有关NFS的使用和挂载,请参看我的另外一篇文章
CentOS配置NFS服务器的方法
2) 支持kvm迁移的qemu-kvm 和 kvm模块:我用的是最新的qemu-kvm-0.13.0.tar.gz
,而kvm模块,由于我的系统的内核版本过低,用的kvm-88中的kvm-intel.ko kvm.ko模块
2,启动kvm虚拟机
在下面的介绍中使用 源虚拟机是待迁移的虚拟机,目的虚拟机是迁移后的虚拟机
源主机的启动命令如下:
./qemu-system-x86_64 -m 512 -hda /home/yangguang/nfs_mnt/images/debian_lenny_i386_small.qcow2 -net tap -net nic,model=rtl8139 -vnc :1 -monitor stdio
#解释说明:
1, /home/yangguang/nfs_mnt: 代表NFS挂载的目录
2, -monitor stdio 将控制台定向的标准输入输出(这个是虚拟机迁移必须的,因为后续需要在命令行中进行操作)
目的虚拟机的启动命令:
./qemu-system-x86_64 -m 512 -hda /home/yangguang/nfs_mnt/images/debian_lenny_i386_small.qcow2 -net tap -net nic,model=rtl8139 -vnc :1 -monitor stdio -incoming tcp:0:8888
#解释说明
1, 启动命令参数必须和源虚拟机的启动参数是一样的,包括网卡类型等
2, -incoming tcp:0:8888 这个是在端口8888接收迁移命令和数据
这时在命令行中输入
源虚拟机显示的状态是running
目的虚拟机的显示的状态时paused
3,进行虚拟机迁移
在源虚拟机中的控制台中执行以下命令:
(qemu) help migrate
migrate [-d] [-b] [-i] uri -- migrate to URI (using -d to not wait for completion)
-b for migration without shared storage with full copy of disk
-i for migration without shared storage with incremental copy of disk (base image shared between src and destination)
(qemu) migrate -d tcp:10.60.1.92:8888
#info migrate 查看当前的迁移的执行状态
(qemu) info migrate
执行完成后,可以通过info status命令来看
源虚拟机和目的虚拟机的状态
这时源虚拟机的状态:paused
目的虚拟机的状态:running
此时迁移完成,源虚拟机就可以退出了(quit)
同时可以在迁移期间,可以在另外一个主机上使用ping命令对迁移的主机进行联通性进行测试,看看虚拟机的中断时间
长短。
4,总结
到此为止,有关虚拟机的迁移已经完成,但是要把KVM虚拟机的迁移应该到实际的环境中,还需要关注下虚拟机迁移过程虚拟机内部服务的中间时间,以及整个虚拟机迁移的时间;同时目前我比较关心的是分布式共享存储的解决方案,NFS肯定是不能解决问题的,不知大家有没有好的解决方案?