openstack 虚拟机迁移过程总结

本文总结了OpenStack中虚拟机迁移的整个流程,包括通过消息队列调用compute服务的live_migration接口,pre_live_migration预迁移阶段,实际迁移过程,以及post_live_migration后的操作。同时提到,若迁移失败,存在rollback回滚机制。
摘要由CSDN通过智能技术生成
虚机的迁移主要分为一下三个阶段: 预迁移 pre_live_migration    迁移   live_migration   迁移后 post_live_migration。

另外,迁移失败后,有rollback操作

1,迁移接口

迁移一个虚机会通过消息队列,最终调用到compute服务中的live_migration接口

def live_migration(self, context, dest, instance,
                       block_migration=False, migrate_data=None):
        migrate_data = dict(migrate_data or {})
        try:
            if block_migration:
                disk = self.driver.get_instance_disk_info(instance['name'])
            else:
                disk = None

            pre_migration_data = self.compute_rpcapi.pre_live_migration(
                context, instance,
                block_migration, disk, dest, migrate_data)
            migrate_data['pre_live_migration_result'] = pre_migration_data
			
		# 以上是预迁移阶段,获取虚机的迁移信息,即告知目标主机做好迁移准备,并返回相关数据

        except Exception:
            with excutils.save_and_reraise_exception():
                LOG.exception(_('Pre live migration failed at %s'),
                              dest, instance=instance)
                self._rollback_live_migration(context, instance, dest,
                                              block_migration, migrate_data)
		#否则就回滚刚才的操作,同样也是通知目标主机此次迁移失败,销毁相关数据

        self.driver.live_migration(context, instance, dest,
                                   self._post_live_migration,
                                   self._rollback_live_migration,
                                   block_migration, migrate_data)
		#  执行迁移动作,同时传递了两个方法:
		#  _post_live_migration     迁移成功后,应该执行的操作
		#  _rollback_live_migration 迁移失败后,回滚操作


2,pre_live_migration

(注,这个是在目标主机上的操作)
    def pre_live_migration(self, context, instance,
                           block_migration=False, disk=None,
                           migrate_data=None):
        block_device_info = self._get_instance_volume_block_device_info(
                            context, instance, refresh_conn_info=True)
		#查看虚机的块设备
		
        network_info = self._get_instance_nw_info(context, instance)  
		#获取虚机的网络信息
		
        pre_live_migration_data = self.driver.pre_live_migration(context,
                                       instance,
                                       block_device_info,
                                       network_info,
                                       disk,
                                       migrate_data)
        #执行预迁移的一些操作
		
        self
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值