Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526518
  • 博文数量: 235
  • 博客积分: 1209
  • 博客等级: 少尉
  • 技术积分: 1417
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 19:59
文章分类

全部博文(235)

文章存档

2012年(107)

2011年(128)

分类:

2012-02-12 20:27:06

有关虚拟机间的动态迁移,我在虚拟机迁移技术漫谈 对它进行大概的介绍,现在结合今天我自身的实践,来具体解释下迁移的步骤;

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接收迁移命令和数据这时在命令行中输入
info status源虚拟机显示的状态是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肯定是不能解决问题的,不知大家有没有好的解决方案?

阅读(702) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~