作为最底层的计算资源，CVM给用户提供的是虚拟的硬件和操作系统，在用户不感知的情况下迁移底层物理设备的难度较大，过去几年我们通过打磨KVM热迁移技术，大致做到了对绝大部分客户无感知的迁移能力。热迁移的原理是把虚拟机的配置信息和正在运行时的内存和虚拟硬件状态拷贝到另一台虚拟机。热迁移的主要问题是迁移时间不好预估，一般也会比停机迁移更长，在故障规避的场景需要有较大的准备时间。目前热迁移在现网被大量使用，近一年我们在线上进行了无感热迁移超200万次，通过热迁移技术累计超卖200w核，并帮助规避了xx次线上隐患。



|  | <span style="font-family:.PingFangSC-Regular;">停机迁移</span> | <span style="font-family:.PingFangSC-Regular;">热迁移</span> |
| -- | -- | -- |
| <span style="font-family:.PingFangSC-Regular;">实现方式</span> | <span style="font-family:.PingFangSC-Regular;">停机之后迁移机器</span> | <span style="font-family:.PingFangSC-Regular;">运行时迭代拷贝配置和状态</span> |
| <span style="font-family:.PingFangSC-Regular;">业务感知</span> | <span style="font-family:.PingFangSC-Regular;">较长时间关机后重启</span> | <span style="font-family:.PingFangSC-Regular;">切换时有</span>100ms<span style="font-family:.PingFangSC-Regular;">左右的卡顿</span> |
| <span style="font-family:.PingFangSC-Regular;">迁移时间</span> | <span style="font-family:.PingFangSC-Regular;">比较固定，数秒到数分钟</span> | <span style="font-family:.PingFangSC-Regular;">不固定，取决于内存变化速度</span> |
| <span style="font-family:.PingFangSC-Regular;">应用场景</span> | <span style="font-family:.PingFangSC-Regular;">常规故障处理</span> | <span style="font-family:.PingFangSC-Regular;">故障规避、超卖和腾挪</span> |



对于计算资源之上的其它云产品，由于抽象层次更高，迁移能力会更简单一些。比如Redis整体架构是proxy + 实例，实例不同副本跨交换机或跨机架部署。在主节点存在风险的情况下，50毫秒左右可以调度到可用副本，业务无感知。 但在proxy故障的情况，对于长链接业务需要在应用层主动重连，短链接不受影响。总体来讲，云产品的无感知迁移具备一定的基础，但仍然存在一些约束，还需要技术团队不断打磨和提升。