毕业设计——Xen迁移相关源码阅读

	Xen中使用C实现底层核心功能,使用Python**解析输入命令**和**调用底层接口**。在Xen的源码中,与动态迁移相关的代码基本可以分为源端的save部分和目的端的restore部分。

	Xen动态迁移的基本架构:
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20191113101001236.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpYXJfMjc=,size_16,color_FFFFFF,t_70)

Save部分:(准备阶段)
1、源主机的Dom0中输入命令 xm --live migrate后,首先由migrate.py对命令的参数进行解析
2、解析后调用xendDomain.py中的**domain_migrate()**函数,确保待迁移的虚拟机存在并且正在运行中,然后在源主机虚拟机中开启影子页表。
3、同时,domain_migrate()建立源主机与目的端的socket连接,并请求迁移。

(动态迁移阶段)
4、收到目的端响应后domain_migrate()会调用xendCheckPoint.py,由**save()**函数向目的端发送SIGNATURE和配置文件,并创建子进程调用xc_save.c完成内存迁移(内存迭代拷贝以及停机拷贝都是在xc_domain_save()函数中完成的,Pre-copy算法就包含在该函数中)
5、在内存迁移进入停机阶段时,由xendCheckPoint.py调用migrateDevices完成设备的迁移及其一系列后续操作

(结束迁移阶段)
6、源主机如果收到目的主机的迁移完毕信号,则调用testDeviceComplete()函数来确认是否所有需要迁移的信息都迁移成功,如果成功,则断开socket,至此,虚拟机迁移结束

Restore部分:
1、Xen的虚拟机监视器启动时会通过SrvDaemon打开8002端口监听
2、在与源主机建立socket连接后由domain_restore_fd()调用xendCheckPoint.py完成迁移内容的接收和目的虚拟机的启动。
3、在接收到源主机的配置文件后,restore()函数回味虚拟机创建image并分配内存等资源,类似的,主要的迁移内容接收工作由新建子进程使用xc_restore.c完成。
4、最后,目的端虚拟机生成CPU id,向源主机发送确认信号并启动虚拟机,迁移完成。

从整体上来看,内存迁移的过程主要由三层循环组成:
1、最外层循环控制迭代次数
2、中间层循环控制查询内存页是否为脏页
3、最里层循环作为中间层的辅助,负责完成内存页的分批发送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值