openstack 热迁移(Live Migration)和冷迁移(Cold Migration)

一.迁移分类

1.冷迁移(cold migration),也叫静态迁移。

在迁移到另外的计算节点时,这段时间虚拟机实例是处于宕机状态的,即关闭电源的虚拟机进行迁移。 通过冷迁移,可以选择将关联的磁盘从一个数据存储移动到另一个数据存储,实例需要重启才能工作。 适用于对象系统可用性要求不是很高的时候,迁移过程中会关机, 拷贝 instance 的镜像文件和重建 libvirt.xml (这个配置文件中会涉及网络环境, 存储设备等配置), 并重新在目标主机上启动。

优点:虚拟机不需要位于共享存储器上,数据丢失率小。缺点:需要关闭电源,业务中断。

2.热迁移(Live Migration),又叫动态迁移、实时迁移。

即虚拟机保存/恢复(Save/Restore):将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。 恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。

在线迁移 (或 '真正的在线迁移')。实例几乎没有宕机时间。用于当实例需要在迁移时保持运行。在线迁移有下面几种类型:

基于共享存储的在线迁移(Live migration): 需要实例保存在NFS共享存储中,所有的Hypervisor都可以访问共享存储,主要是实例的内存状态的迁移,速度会很快。

块在线迁移(Block migration):不要求实例存储在共享文件系统中,即无须共享存储。当各主机上vm使用的是本地存储, 而不是共享存储时, 要实现迁移, 需要实现镜像文件和内存状态同时迁移,还得迁移磁盘文件,速度会慢些。

基于卷的在线迁移:实例都是基于卷的而不是临时的磁盘,无须共享存储,也支持迁移(目前仅支持基于libvirt的hypervisor)。

优点:软件和硬件系统的维护升级,不会影响用户的关键服务,提高了服务的高可用性和 用户的满意度。缺点:过程不可中断,操作复杂。

二. 虚机迁移场景

场景 1: 物理机器硬件系统的维护,故障修复和升级(upgrade),但运行在这台物理机器上的虚拟机不能关机,因为用户重要的服务跑在上面。

场景 2: 物理机器软件系统升级,打补丁(patch),为了不影响上面跑的虚拟机,在升级和打补丁之前,需要把虚拟机迁移到别的物理机器上。

场景 3: 一个物理机器上的负载太重,需要减少一些虚拟机来释放资源。

场景 4: 跨域环境下,有的域里有的物理机上的虚拟机太多,有的域里物理机上虚拟机太少,做一下资源平衡。

三.虚拟机迁移中数据处理

虚拟机的迁移,就是数据的转移,如果计算节点之间没有共享存储,所以要转移的数据包括两部分:

2025-12-09 19:36:28