虚拟机热迁移技术介绍

本文分享自天翼云开发者社区《虚拟机热迁移技术介绍》,作者:潘****东

什么是虚拟机热迁移
虚拟机热迁移(Virtual Machine Live Migration)是一种技术,它允许在不中断虚拟机运行的情况下将虚拟机从一台物理主机迁移到另一台物理主机。

传统上,当需要迁移虚拟机时,必须先将虚拟机关机,然后将虚拟机的状态和数据从源主机复制到目标主机,最后再启动虚拟机。这种关机迁移方式会导致虚拟机暂时不可用,造成服务中断和用户体验下降。

而虚拟机热迁移则克服了这个问题,它允许在虚拟机继续运行的同时将其迁移到新的物理主机上。这意味着虚拟机的状态和数据可以在迁移过程中实时复制,并在迁移完成后立即在目标主机上继续运行,几乎没有对用户的可见中断。

虚拟机热迁移通常由虚拟化管理软件(如VMware vSphere、Microsoft Hyper-V、OpenStack等)提供支持。它需要源主机和目标主机之间的高速网络连接,以便实时复制虚拟机的内存、磁盘和网络状态。

虚拟机热迁移的应用场景包括负载均衡、资源优化、硬件维护和故障恢复。通过将虚拟机从一个主机迁移到另一个主机,可以实现对资源的动态调度和平衡,提高系统的可用性和灵活性。同时,用户可以在不中断服务的情况下对物理主机进行维护或故障恢复操作,提高系统的可靠性和可维护性。

常见的虚拟机迁移方法

Pre-Copy算法

Pre-copy算法是一种用于虚拟机热迁移的优化算法,它通过多次迭代的方式在源主机和目标主机之间传输虚拟机的内存页面,以减少迁移过程中的传输数据量和迁移时间。

Pre-copy算法的基本思想是先快速迁移虚拟机的初始内存状态,然后在后续迭代中传输变化的内存页面,直到达到一定的收敛条件。这样可以在较短的时间内实现迁移,并最大程度上减少虚拟机的停机时间和用户的感知中断。

下面是Pre-copy算法的基本步骤:

1.初始迁移(Initial Migration):在迁移开始时,首先将虚拟机的初始内存页面从源主机传输到目标主机。这一阶段通常采用较高的带宽传输,以尽快完成初始迁移,但并不要求完全传输所有内存页面。

2.迭代传输(Iterative Transfer):在初始迁移完成后,源主机和目标主机开始进行迭代传输。在每次迭代中,源主机会将虚拟机内存页面的变化部分传输给目标主机。这些变化部分通常是在初始迁移后发生的写操作引起的。目标主机接收到变化页面后,会将其合并到已经迁移的内存中。

3.收敛判断(Convergence Check):在每次迭代传输后,需要进行收敛判断。收敛判断是根据一定的准则来判断是否继续迭代传输。例如,可以设置一个阈值,当变化页面的比例低于阈值时,认为迁移已经收敛,停止迭代。

4.完成迁移(Migration Completion):当收敛判断满足时,表示迁移已经完成。此时,目标主机上的虚拟机已经包含了源主机上所有的内存页面,并且在迁移过程中的变化页面也已经传输完毕。虚拟机可以在目标主机上继续运行,而用户几乎感知不到中断。

Pre-copy算法的优势在于它可以快速进行初始迁移,并通过迭代传输的方式减少后续的数据传输量。这样可以在有限的时间内完成迁移,并减少对网络带宽的需求。然而,Pre-copy算法也存在一些挑战,如对网络延迟和带宽的敏感性,以及在高写入负载下的迁移效果下降等问题。因此,实际应用中需要根据具体情况选择合适的迁移算法和策略。

Post-Copy算法

Post-Copy算法是虚拟机热迁移中的一种优化算法,它与Pre-copy算法相反。Post-Copy算法的基本思想是先迁移虚拟机的控制流程,然后在后续迭代中逐步传输虚拟机的内存页面。

下面是Post-Copy算法的基本步骤:

1.初始迁移(Initial Migration):与Pre-copy算法类似,初始迁移阶段将虚拟机的初始内存页面从源主机传输到目标主机。这确保了虚拟机的控制流程可以在目标主机上执行。

2.内存页面传输(Memory Page Transfer):在初始迁移完成后,目标主机上的虚拟机开始运行,但其内存中只包含部分内存页面,还有一些页面尚未传输到目标主机。当虚拟机试图访问尚未传输的页面时,会发生缺页中断。在缺页中断发生时,源主机会将缺失的内存页面传输给目标主机,以满足虚拟机的需求。

3.缺页中断处理(Page Fault Handling):目标主机接收到缺失的内存页面后,会将其插入到虚拟机的内存中,并继续执行虚拟机的控制流程。这个过程可能会引发新的缺页中断,如果发生新的缺页中断,源主机会再次传输缺失的页面。

4.收敛判断(Convergence Check):在每次缺页中断处理后,会进行收敛判断,判断是否继续传输缺失的内存页面。通常,可以设置一个收敛条件,例如传输的页面数量或时间间隔。如果达到收敛条件,则认为迁移已经收敛,停止传输。

5.完成迁移(Migration Completion):当收敛判断满足时,表示虚拟机的内存页面已经在迁移过程中逐步传输完毕。虚拟机可以在目标主机上继续运行,并且用户的感知中断时间较短。

Post-Copy算法的优势在于它可以快速启动虚拟机,并减少初始迁移所需的时间和带宽。它将重点放在迁移虚拟机的控制流程,尽快使虚拟机在目标主机上运行,而不必等待所有内存页面的传输。然后,通过缺页中断处理逐步传输缺失的页面,减少了对网络带宽的需求。

然而,Post-Copy算法的缺点是在迁移过程中可能会发生频繁的缺页中断,对应用程序的性能产生一定影响。因此,在实际应用中,需要权衡迁移时间和应用程序性能,并根据具体情况选择合适的迁移算法。

Pre-Copy算法和Post-Copy的对比

1.迁移策略:

Pre-copy算法:Pre-copy算法采用先传输内存页面再执行虚拟机的策略。它在初始迁移阶段快速将虚拟机的初始内存页面传输到目标主机,然后通过多次迭代传输变化的内存页面。这种策略可以在较短时间内完成迁移,减少虚拟机的停机时间。

Post-Copy算法:Post-Copy算法采用先迁移控制流再逐步传输内存页面的策略。它在初始迁移阶段快速启动虚拟机,并将部分内存页面传输到目标主机,然后通过缺页中断处理逐步传输缺失的页面。这种策略可以在较短时间内使虚拟机在目标主机上运行,并减少初始迁移所需的时间和带宽。

2.迁移效果:

Pre-copy算法:Pre-copy算法可以快速进行初始迁移,并在后续迭代中逐步传输变化的内存页面。这样可以最大程度上减少虚拟机的停机时间和用户的感知中断。然而,在高写入负载下,Pre-copy算法可能需要频繁迭代传输内存页面,导致迁移效果下降。

Post-Copy算法:Post-Copy算法将重点放在迁移控制流程上,尽快使虚拟机在目标主机上运行,并通过缺页中断处理逐步传输内存页面。这种方式可以减少初始迁移所需的时间和带宽,并在迁移过程中逐步恢复虚拟机的完整内存状态。然而,在迁移过程中可能会发生频繁的缺页中断,对应用程序的性能产生一定影响。

3.带宽需求:

Pre-copy算法:Pre-copy算法在初始迁移阶段需要较高的带宽来快速传输初始内存页面,后续迭代传输的带宽需求较低,因为只传输变化的内存页面。但是,如果迁移过程中发生大量页面变化,仍然可能需要较高的带宽来支持迭代传输。

Post-Copy算法:Post-Copy算法在初始迁移阶段只传输部分内存页面。

在KVM中实现虚拟机热迁移

要在KVM中实现虚拟机的热迁移,可以按照以下步骤进行操作:

1.确保基础设置:

确保源主机和目标主机之间具有网络连通性,可以相互访问。

确保源主机和目标主机具有相同的CPU类型和体系结构,以确保迁移的兼容性。

2.配置共享存储:

确保源主机和目标主机可以访问共享的存储资源,如共享存储区域网络(SAN)或网络文件系统(NFS)。

在源主机和目标主机上设置相同的存储路径,以便虚拟机的磁盘镜像可以在迁移过程中保持一致。

3.启用迁移支持:

在KVM宿主机上启用虚拟机热迁移的支持。这通常需要在主机的KVM配置文件中设置相关参数,如将迁移模式设置为"live"。

也可以使用管理工具(如libvirt或virsh命令)来启用迁移支持。

4.执行虚拟机热迁移:

使用管理工具(如libvirt或virsh命令)执行虚拟机热迁移操作。例如,使用virsh命令可以执行以下命令:virsh migrate --live <虚拟机名称> qemu+tcp://<目标主机IP>/system

5.监控迁移过程:

在迁移过程中,可以使用工具或命令来监控迁移的进度和状态。例如,使用virsh命令的migrate子命令可以查看迁移状态。

6.完成迁移:

一旦所有的内存页面和虚拟机状态都被传输到目标主机,并且虚拟机在目标主机上完全恢复,迁移过程就完成了。

在目标主机上验证虚拟机的正常运行和配置是否正确。

参考KVM热迁移指南:https://www.linux-kvm.org/page/Migration

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795899.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分库分表零基础

一、前言 中大型项目中,一旦遇到数据量比较大,就应该对数据进行拆分。有垂直和水平两种 。 垂直拆分也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。 水平拆分,是同一个业务数据量大之后,进行水平拆分。 mysql单表存储量推荐是百万级,如果不进行处理,…

PbootCms内页打不开的常见情况汇总

当遇到PBootCMS内页无法正常访问的情况时,特别是当点击任何链接都跳转到首页或内页访问报错时,通常与伪静态配置有关。以下是最简单粗暴的方案——关闭伪静态,使用兼容模式的操作步骤: 1. 关闭伪静态 步骤 1: 修改全局设置登录PBootCMS后台。 导航到“全局设置”。 找到“U…

nohup后台运行,关闭Xshell后,进程会被关闭

1.在使用nohup后台运行进程时,直接关闭远程Xshell终端窗口,发现进程就被停掉了,可以看到nohup.out日志显示停掉了2.解决方法,执行了nohup指令后,退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端 3.然后再关闭Xshell进程就不会受影响了

pbootcms模板如何实现产品置顶

要在PBootCMS中实现产品的置顶功能,你可以按照以下步骤操作:定位到模板文件:打开你的网站后台。 导航到模板管理部分,找到templates default目录下的index.html文件。修改产品列表查询参数:在index.html文件中找到展示产品列表的部分。 修改产品列表的查询参数,将order=s…

算法与数据结构——二分查找

二分查找 二分查找(binary search)是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮缩小一半搜索范围,直至找到目标元素或搜索区间为空为止。Qustion: 给定一个长度为n的数组nums,元素按从小到大的顺序排列且不重复。请查找并返回元素target在该数组中的索引。…

栈Stack——递归替身?

对于Stack这个集合类,由类继承关系可知是Vector的子类,根据push入栈方法跟踪代码,可知Vector是一个线程安全的类(如果你用来储存大量数据,那可能不是一个好的选择)看到这里,显然可以得知Stack入栈出栈的大致原理,就是Vector的elementData对象数组,用来储存数据,入栈时…

煤矿反光衣穿戴识别系统

煤矿反光衣穿戴识别系统对视频监控画面开展实时识别分析,可以及时预警施工工地工作员是不是按照规定穿反光衣。当煤矿反光衣穿戴识别系统发现视频监控界面中有工作人员不穿反光衣时,系统会积极主动开启警报提示。工程师依据煤矿情景开展有目的的算法优化。本优化计算方法具有…

如何彻底关闭Win11自动更新?

如何彻底关闭Win11自动更新?https://www.disktool.cn/content-center/stop-windows-11-update-666.html1、“Win+R”调出运行,输入“services.msc”,回车打开服务。  2、找到“Windows update”,打开。  3、设置为“禁用”,然后点击“停止”。方案一:使用Windows设置…

释放静电行为监测识别系统

释放静电行为监测识别系统对烟花爆竹厂进入车间的入口处进行实时监测分析,当释放静电行为监测识别系统监测一部分员工进到车间之前并没有触摸静电释放仪,系统就会自动开启警报同时语音提醒工人触碰静电释放器释放静电,并把警报截屏和视频保存到下来生成表格,推送给有关人员…

监控视频行为分析系统

监控视频行为分析系统是可以通过利用现场监控摄像头传回的现场画面视频利用AI神经网络模型的人工优化算法分析识别人们运动轨迹,监控视频行为分析系统去识别监控摄像机拍摄到的各种人的异常行为,甚至很多行为识别规则大多数场景下都可以做到零误报。这大大降低了系统对硬件的…

洛谷题单指南-分治与倍增-P1966 [NOIP2013 提高组] 火柴排队

原题链接:https://www.luogu.com.cn/problem/P1966 题意解读:计算两个序列∑(ai​−bi​)^2的最小值,对10^8-3取模。 解题思路: 1、贪心思路 要使得两个序列对应位置元素之差的平方和最小,必须满足两个序列相对排序是一致的,什么意思? 设a序列有两个元素:a1,a2,b序列…