虚拟机迁移技术研究

时间:2022-09-22 07:31:31

虚拟机迁移技术研究

摘要:本文主要结合libvirt技术,研究实现了虚拟机迁移,总结了虚拟机动态迁移条件。

关键词:虚拟机迁移 libvirt

一、虚拟机迁移实现

虚拟机在物理机之间的迁移包括:静态迁移、动态迁移

静态迁移又称为常规迁移、离线迁移(Offline Migration),就是在虚拟机关机或暂停的情况下从一台物理机迁移到另一台物理机。因为虚拟机的文件系统建立在虚拟机镜像上面,所以在虚拟机关机的情况下,只需要简单的迁移虚拟机镜像和相应的配置文件到另外一台物理主机上;如果需要保存虚拟机迁移之前的状态,在迁移之前将虚拟机暂停,然后拷贝状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。这种方式的迁移过程需要停止虚拟机的运行。停机时,虚拟机上的服务不可用。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。

动态迁移(Live Migration)又称为在线迁移(Online Migration),就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,虚拟机系统在目的主机上继续运行。对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。动态迁移适用于对虚拟机服务可用性要求很高的场合。

由于静态迁移比较简单,在这只说明动态迁移实验:

动态迁移试验可以适用virt-manager管理工具或virsh命令进行,过程相似,下面以适用virsh命令为例介绍。

① 利用virsh命令创建共享存储池

[root@co5013 ~]# virsh pool-autostart virsh_pool

Pool virsh_pool marked as autostarted

[root@co5013 ~]# mkdir -p /var/lib/libvirt/images/virsh_pool

[root@co5013 ~]# virsh pool-start virsh_pool

Pool virsh_pool started

② 利用如下命令在virsh_pool下创建名为virsh_test.img文件的卷:

[root@co5013 images]# virsh vol-create-as virsh_pool virsh_test.img 8G --format raw

Vol virsh_test.img created

③ 共享存储池下新建虚拟机

A.共享存储池下的新建卷中新建虚拟机

利用virt-install命令在刚创建好的卷上安装虚拟机:

[root@co5013 root]#virt-install --name virsh_test --ram 1024 --location /home/rhel-server-6.0-x86_64-dvd.iso --disk=/var/lib/libvirt/images/virsh_pool/virsh_test.img pool=virsh_pool vol=virsh_test.img bridge br0 --virt-type=qemu

执行该命令后接着往下开始安装虚拟机,虚拟机的具体安装步骤不再赘述。

B.共享存储池下已经存在的镜像文件导入方式新建虚拟机

[root@co5013 root]#vir-install name virsh_test ram 1024 import /var/lib/libvirt/images/virsh_pool/virsh_test.img disk /var/lib/libvirt/images/virsh_pool/virsh_test.img

命令执行后,直接弹出虚拟机启动的界面。

④ 在线迁移

查看源主机和目的主机上的SELINUX是否已经关闭,因为在多次迁移的实验中,SELINUX有时会自动被设置成enforceing状态;确定主机上的SELINUX已经关闭之后,在co5013上开始执行在线迁移:

[root@co5013 ~]# virsh migrate --live virsh_test qemu+ssh://168.171.5.28/system

root@168.171.5.28’s password:

迁移命令执行完成,查看co5012上的虚拟机,发现virsh-test虚拟机已经在上面运行,同时co5013上没有正在运行的虚拟机,利用virsh在文本方式下进行虚拟机的迁移成功。

(3) 在线迁移成功的条件

经过多次的迁移实验,总结的虚拟机在线迁移成功的条件如下:

共享存储必须挂载在相同的路径下,也就是说使用的镜像文件的路径必须保持一致,存储池的名字可以不一致;

源主机上的虚拟机迁移到目的主机上,必须保证两个主机的操作系统版本以及更新一致;

设置的桥接器必须一致,即网络桥接器的名字必须一致;

源主机和目的主机上SELINUX必须关闭;

源主机和目的主机上需要配置允许动态迁移的防火墙策略;

源主机和目的主机之间的域名能相互解析;

二、结束语

通过分析实现虚拟机迁移的配置条件,结合虚拟存储技术,虚拟资源配置技术和虚拟资源监控,实现对服务器虚拟机虚拟内存、虚拟硬盘和其他状态信息的拷贝,实现虚拟机从一个物理服务器到另一个物理服务器的迁移,同时不影响虚拟机上应用服务的运行,可以保障在物理服务器发生故障时,不停机直接将应用服务器从一台主机迁移到另一台主机上,从而保持业务的持续性。

参考文献

[1]《Linux应用程序开发(第2版)》 Michael K.Johnson, Erik W.Troa 武延军等译 2005年11月 电子工业出版社

[2]《Linux系统应用与开发教程》刘海燕等 2005年10月 机械工业出版社

[3]《UNIX网络编程(第1卷) 》 (美)史蒂文斯,(美)芬纳,(美)鲁道夫 2006年1月 清华大学出版社

上一篇:如何推进石化企业矿区法治文化建设 下一篇:关于建筑设计中的住宅地产设计