openstack-虚机-迁移步骤

一直忘记记录虚机迁移过程,时间长了就模糊了,这里记录一下虚机迁移的大体流程

前置条件

  • 权限检查:执行迁移的用户是否有足够的权限执行动态迁移。
  • 参数检查:传递给API的参数是否足够与正确
  • 检查目标物理主机是否存在。
  • 检查被迁移的云主机是否为up状态。
  • 检查源和目的物理主机上的nova-compute service是否正常运行。
  • 检查目的物理主机与源物理主机是否为同一台服务器。
  • 检查目的物理主机是否有足够的内存。
  • 检查目的主机的Hypervisor版本是否大于等于源主机。

预处理

  • 在目的物理主机上获得与准备云主机挂载的块设备(Volume)。
  • 在目的物理主机上设置云主机的网络(Networks)。
  • 在目的物理主机上设置云主机的防火墙(Fireware)。

迁移ing

  • 调用libvirt的Python接口migrateToURI,执行动态迁移。
  • 以一定的时间间隔(0.5)循环调用wait_for_liva_migration方法,检测云主机迁移的状态,直到云主机成功迁移。

迁移后处理

  • 在源物理主机上 detach volume。
  • 在源物理主机上释放 security group ingress rule。
  • 在目的物理主机上更新数据库里虚拟机的状态。
  • 在源物理主机上删除虚拟机。

经过上述处理,虚机就成功迁移到新的计算节点上。

注意: 如果待迁移的主机正在进行耗费内存的操作,则可能导致动态迁移的失败。

参考:openstack热迁移机制分析(libvirt热迁移模型、nova热迁移控制逻辑、调试方法)