当前位置: 首页 > news >正文

云计算基础-虚拟机迁移原理

什么是虚拟机迁移

虚拟机迁移是指将正在运行的虚拟机实例从一个物理服务器(或主机)迁移到另一个物理服务器(或主机)的过程,而不会中断虚拟机的运行。

虚拟机拟机迁移分类虚

热迁移:开机状态下迁移

冷迁移:关机状态下迁移

虚拟机可以迁移哪些东西?

1. 虚拟机的配置文件

2. 虚拟机的内存呢

3. 虚拟机的磁盘文件

虚拟机配置文件迁移

虚拟机配置文件迁移就是从主机A将虚拟机的配置文件移动至主机B的过程

首先看配置文件,在执行迁移前,虚拟机的配置文件是在CNA03上的

迁移完成,再看虚拟机的配置文件已经不在CNA03上了

CNA02上可以看到该虚拟机的配置文件

内存迁移

内存迁移使用了写时重定向,流程如下(只考虑内存迁移,不考虑脏页等其他任何情况)

1. 迁移前虚拟机对内存的读写如图

2. 在迁移时,虚拟机的原宿主机会在内存中生成内存位图,并将原内存空间置为只读状态

3. 内存位图内保存了原内存空间的指针,后续虚拟机的所有读写都是往内存位图空间去读写,内存位图有点类似于ROW的快照空间

如图,此时虚拟机所有读写操作都是在内存位图所在内存上操作,通过内存位图中的指针来读取VM的原有数据,新数据全部写入到内存位图所在内存

4. 然后将这块只读的内存通过迁移网络迁移到目标宿主机

5. 多次迭代迁移

迭代迁移只需要迁移变化的内存就可以了,假设每100M内存迁移需要10秒,VM1占用内存为1000M,则迁移这1000M内存需要100秒,假设这100秒内又产生了200M的新内存,如果此时阻止上层IO下发并将这200M内存迁移到目标主机后运行,这过程中则需要终端2秒业务,所以需要多次迭代迁移,减小业务中断时间直至为无感知状态

6. 当最后一次迭代迁移的内存足够小时,系统立即阻止上层IO下发,最后一次同步内存数据到目标主机,并将虚拟机的配置文件迁移到目标主机

7. 虚拟机在目标主机上运行,迁移完成

存储热迁移

为什么要存储热迁移

  1. 原存储老旧,需要更换
  2. 原存储负载太重,添加存储分担原存储压力
  3. 原存储性能不足,无法满足虚拟机运行要求,希望迁移到性能更好的存储上
  4. 改变磁盘模式

存储热迁移原理

  1. 在目的数据存储上生成差分磁盘文件,该磁盘文件中记录了原磁盘磁盘文件的指针,将虚拟机的虚拟磁盘修改为差分磁盘,此时,虚拟机所有的读写操作都是在差分磁盘文件上操作
  2. 将原磁盘文件合并到差分磁盘文件中
  3. 迁移完毕

虚拟机迁移注意事项

1. 虚拟机迁移不会影响业务,但会影响虚拟机性能,建议业务空闲时操作

2. 跨集群热迁移条件

  1. CPU必须兼容
  2. 两个集群共享同一个存储资源
  3. 跨集群热迁移必须手动,无法自动实现

相关文章:

  • ChatGPT-4 Alpha:OpenAI的革命性升级
  • Doris ——SQL原理解析
  • C++中的constexpr
  • C#面:简述重载
  • 基于SpringBoot+WebSocket+Spring Task的前后端分离外卖项目-订单管理(十七)
  • 用Python和OpenCV搭建自己的一维码和QRCode扫描仪(步骤 + 源码)
  • C++学习Day05之函数调用运算符重载
  • PostgreSQL的学习心得和知识总结(一百二十八)|构建 PostgreSQL 负载测试器
  • 模型训练 —— AI算法初识
  • Python实现时间序列分析指数平滑模型(ExponentialSmoothing算法)项目实战
  • GZ036 区块链技术应用赛项赛题第7套
  • 数据结构~二叉树(基础知识)
  • 多线程的基本原理学习
  • SpringCloud-Feign:负载均衡(基于服务端)
  • git错误整理
  • [译]CSS 居中(Center)方法大合集
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CSS 专业技巧
  • Elasticsearch 参考指南(升级前重新索引)
  • EOS是什么
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • springboot_database项目介绍
  • 当SetTimeout遇到了字符串
  • 基于组件的设计工作流与界面抽象
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端面试之闭包
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 提醒我喝水chrome插件开发指南
  • ​iOS安全加固方法及实现
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (06)金属布线——为半导体注入生命的连接
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (数据结构)顺序表的定义
  • (原創) 未来三学期想要修的课 (日記)
  • (转)iOS字体
  • (转)使用VMware vSphere标准交换机设置网络连接
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net7 环境安装配置
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net实现客户区延伸至至非客户区
  • @Autowired注解的实现原理
  • @SentinelResource详解