OpenStack虚拟机冷迁移与热迁移

2023-05-16

 一、虚拟机迁移分析

openstacvk虚拟机迁移分为冷迁移和热迁移两种方式。

1.1冷迁移

冷迁移(cold migration),也叫静态迁移。关闭电源的虚拟机进行迁移。通过冷迁移,可以选择将关联的磁盘从一个数据存储移动到另一个数据存储。

好处:虚拟机不需要位于共享存储器上,数据丢失率小。

缺点:需要关闭电源,业务中断。

 

1.2热迁移:

热迁移(Live Migration),又叫动态迁移、实时迁移,即虚拟机保存/恢复,通常是将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。

好处:软件和硬件系统的维护升级,不会影响用户的关键服务,提高了服务的高可用性和 用户的满意度。

缺点:过程不可中断,操作复杂。

 

1.3虚拟机迁移的场景:

场景 1:物理机器硬件系统的维护,故障修复和升级(upgrade),但运行在这台物理机器上的虚拟机不能关机,因为用户重要的服务跑在上面。

场景 2:物理机器软件系统升级,打补丁(patch),为了不影响上面跑的虚拟机,在升级和打补丁之前,需要把虚拟机迁移到别的物理机器上。

场景 3:一个物理机器上的负载太重,需要减少一些虚拟机来释放资源。

场景 4跨域环境下,有的域里有的物理机上的虚拟机太多,有的域里物理机上虚拟机太少,做一下资源平衡。

 

1.4虚拟机迁移中数据处理

虚拟机的迁移,就是数据的转移,如果计算节点之间没有共享存储,所以要转移的数据包括两部分:

1、静态数据:存储在本地的虚拟机的镜像文件,包括后端镜像(libvirt Base)和虚拟机单独的增量镜像文件(libvirt instance disks)

2、动态数据:内存里虚拟机的运行时数据,内存里的数据是动态变化的数据,虚拟机里运行的负载的大小直接影响迁移的时间长短。

 

1.5虚拟机迁移中存储

共享存储与非共享存储

虚拟机的数据存在共享磁盘上(Shared storage-based live migration),迁移只需要完成内存数据的迁移。

 

虚拟机的数据存在本地磁盘(block migration),需要对镜像文件和内存数据同时迁移。

 

注意:本文使用的系统是ubuntu18.04,OpenStack版本是Pike。其他系统略有出入

 

二、冷迁移

冷迁移实现方法有多种,例如有快照来迁移实例、实例文件迁移。以文件迁移为例,完成冷迁移。

2.1虚拟机文件冷迁移步骤:

1、关闭虚拟机

2、找到虚拟机位于/var/lib/nova/instances下文件

3、将虚拟机的文件全部copy到目标主机的相同位置下

4、修改用户组

5、更新数据库中host,node字段为目标主机的名字

6、重启目标主机的nova-compute服务

 

2.2操作记录

显示运行的虚机

 

关闭虚机

 

将文件copy到目标主机的对应位置下

 

 

修改权限

  

 

修改数据库中的字段

update instances set host='compute15', node='compute15' where uuid='3483d9f1-4015-48d9-9837-b67ca82dd54d';

 

 

查询虚机所在的主机

 

启动虚机

 

三、热迁移

热迁移是在不停机的情况下完成迁移,步骤比起冷迁移要复杂。

 

3.1热迁移步骤:

1、迁移前的条件检查

2、迁移前的预处理

3、迁移过程

4、迁移后的处理

 

3.1.1迁移前的条件检查

动态迁移要成功执行,一些条件必须满足,所以在执行迁移前必须做一些条件检查。

1、权限检查,执行迁移的用户是否有足够的权限执行动态迁移。

2、参数检查,传递给 API 的参数是否足够和正确,如是否指定了 block-migrate 参数。

3、检查目标物理主机是否存在。

4、检查被迁移的虚拟机是否是 running 状态。

5、检查源和目的物理主机上的 nova-compute service 是否正常运行。

6、检查目的物理主机和源物理主机是否是同一台机器。

7、检查目的物理主机是否有足够的内存(memory)

8、检查目的和源物理主机器 hypervisor hypervisor 的版本是否相同。

 

3.1.2迁移前的预处理

在真正执行迁移前,做一些准备工作

1、在目的物理主机上获得和准备虚拟机挂载的块设备(volume)

2、在目的物理主机上设置虚拟机的网络(networks)

3、目的物理主机上设置虚拟机的防火墙(fireware)

 

3.1.3迁移过程

条件满足并且做完了预处理工作后,就可以执行动态迁移了。主要步骤如下:

1、调用 libvirt python 接口 migrateToURI,来把源主机迁移到目的主机。

2、以一定的时间间隔(0.5)循环调用 wait_for_live_migration 方法,来检测虚拟机迁移 的状态,一直到虚拟机成功迁移为止。

 

3.1.4迁移后的处理

当虚拟机迁移完成后,要做一些善后工作。

1、在源物理主机上 detach volume

2、在源物理主机上释放 security group ingress rule

3、在目的物理主机上更新数据库里虚拟机的状态。

4、在源物理主机上删除虚拟机。

上面四步正常完成后,虚拟机就成功的从源物理主机成功地迁移到了目的物理主机了。

 

3.2热迁移配置:

热迁移需要libvirt远程登录和传输,所以开启libvirtTCP连接方式

virsh -c qemu+tcp://172.171.8.14/system

例如:qemu+tcp://172.16.0.15/system,服务端只需要配置

 

修改/etc/libvirt/libvirtd.conf:


listen_tls = 0         

listen_tcp = 1           

tcp_port = "16509"      

listen_addr = "0.0.0.0"

auth_tcp = "none"  

 

  

 修改libvirtd的配置文件/etc/default/libvirtd:


# Start libvirtd to handle qemu/kvm:

start_libvirtd="yes"

# options passed to libvirtd, add "-l" to listen on tcp

libvirtd_opts="-d -l --config /etc/libvirt/libvirtd.conf"  

 

 

以上修改后,执行


service libvirt-bin restart

netstat -anpt | grep libvirt  

 

可以看到libvirtd监听在TCP 16509端口。

 

配置nova.conf

计算节点的/etc/nova/nova.conf文件中添加如下的内容,使得compute服务支持热迁移。


live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE  

 

重启nova-compute


service nova-compute restart  

 

修改用户组

查看目标主机的用户组信息


id nova  

 

 修改所有计算节点为相同的用户组id


usermod -u *** nova

usermod -u *** libvirt-qemu

groupmod -g *** nova

groupmod -g *** kvm  

  

openstack迁移命令

查看所有实例


nova list  

 

查看需要迁移虚拟机实例


nova show [实例id]  

 

查看可用的计算节点


nova-manage service list  

  

查看目标节点资源


nova-manage service describe_resource computer1  

 

开始迁移,正常无任何回显


nova live-migration  [实例id]  [计算节点]   

 

3.3操作记录

查看虚拟机

 

 

查看虚拟机所在计算节点

 

 

迁移

 

 

查看迁移后的虚拟机所在节点

 

 

在迁移过程中,dashboard中会出现正在迁移的任务

 

3.4 大型镜像测试

OpenLab平台镜像迁移

创建虚拟机,镜像是ubuntu1.8G

 

 

迁移之前ubuntu所在的主机为compute14

 

 

迁移中 

 

迁移之后ubuntu所在的主机为compute15

 

 

运行测试

创建虚拟机ubuntu_two,所在主机为compute14

 

迁移之前的界面

 

迁移过程

 

  

迁移之后的虚拟机所在的主机为compute15

 

 

迁移过程很快,2min左右,迁移之后界面仍然是之前的界面

 

 

转载于:https://www.cnblogs.com/goldsunshine/p/9588017.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenStack虚拟机冷迁移与热迁移 的相关文章

随机推荐

  • 高级计算机网络知识点

    题目类型 xff1a 判断20分 xff08 10题 xff09 单选20分 xff08 10题 xff09 简答30分 xff08 5题 xff09 问答 计算30分 xff08 3题 xff09 1 ARPANET的主要设计原则 1 1
  • Linux使用技巧:linux下将命令值赋给shell变量

    很多小伙伴在写shell脚本的时候需要把命令输出的值赋给一些变量 xff0c 使得脚本在运行过程中能够顺利使用这些变量 例如 xff1a 很多时候我们就需要获取当前目录的绝对路径 xff0c pwd这个命令大家在熟悉不过 xff0c 可是要
  • OpenDaylight虚拟租户网络(VTN)详解及开发环境搭建

    一 VTN简介及架构分析 xff1a 具体详见开发人员指南wiki xff1a https wiki opendaylight org view Release Lithium VTN developer Guide 这里有两篇很好的初学者
  • LCD1602和LCD12864

    1602 字符型 xff08 字符型的模组 xff09 只能显示数字与字符 不可以显示汉字 12864 点阵型 xff08 图形型的模组 xff09 可根据需求任意显示字符 数字 汉字 图形 1602 为16字乘2行 12864 为128列
  • 虚拟机去混杂模式与 vlan in vxlan 特性

    虚拟机 vlan trunk 特性 1 功能 1 xff09 允许不同vlan的network下的虚拟机之间通信 一般情况下 xff0c 虚拟机只能在相同vlan的网络下通信 2 xff09 允许虚拟机发送vlan报文 2 组网图 虚拟机出
  • 慧智物联剖析信息化与数字化的区别,文件管理不容忽视

    目前 xff0c 数字化 一词铺天盖地 xff0c 已经成为经济 科技等领域最热门的话题 社会各界乃至国家都非常重视 xff0c 大力推广 xff0c 可以说是国家战略 信息化 xff0c 经常和数字化一起被提及 xff0c 是两个容易混淆
  • Dev-C++ 5.11简单使用说明

    点此下载 xff0c 下载完后解压并双击 Dev Cpp 5 11 TDM GCC 4 9 2Setup exe xff0c 默认安装即可 使用过程如下 xff1a 0 打开Dev C 43 43 开发环境 1 新建源文件 xff0c 按C
  • Deep Belief Network简介

    1 多层神经网络存在的问题 常用的神经网络模型 一般只包含输入层 输出层和一个隐藏层 xff1a 理论上来说 隐藏层越多 模型的表达能力应该越强 但是 当隐藏层数多于一层时 如果我们使用随机值来初始化权重 使用梯度下降来优化参数就会出现许多
  • 神经网络浅讲:从神经元到深度学习

    神经网络是一门重要的机器学习技术 它是目前最为火热的研究方向 深度学习的基础 学习神经网络不仅可以让你掌握一门强大的机器学习方法 xff0c 同时也可以更好地帮助你理解深度学习技术 本文以一种简单的 xff0c 循序的方式讲解神经网络 适合
  • CentOS7使用firewalld打开关闭防火墙与端口

    1 firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 xff1a systemctl status firewa
  • Vue生命周期

    Vue实例的生命周期 什么是生命周期 xff1a 从Vue实例创建 运行 到销毁期间 xff0c 总是伴随这各种各样的事件 xff0c 这些事件统称为生命周期 生命周期钩子 xff1a 就是生命周期事件的函数 主要的生命周期函数分类 xff
  • toapi模块简单使用

    toapi是一个api与爬虫结合的一个库 使用简单 可以自定义api展示 简单的mockserver 但只限制于get请求 toapi会在同级目录下建立缓存机制 再次访问就会读缓存了 安装 pip intall toapi pip inst
  • 高等数学同济第七版课后答案上册

    高等数学同济第七版课后答案上册 下载地址 xff1a 链接 xff1a https pan baidu com s 185C8RB4Y9pYO84V4Rup1Wg 提取码 xff1a p7o4 如果链接失效扫一扫右侧 xff0c 回复 高等
  • 以Integer类型传参值不变来理解Java值传参

    最近在写代码的时候出了一个错误 xff0c 由于对值引用理解的不深 将Integer传入方法中修改 xff0c 以为传入后直接修改Integer中的值就不用写返回值接收了 xff0c 虽然很快发现了问题 xff0c 但还是来总结一下 首先是
  • HD2AV_F3B

    文档内容 xff1a 循环存储器的编写 xff0c 每一行的像素输入进行存储 xff0c 再依据目标像素所在行进行相应的读取 工程中会开辟一定空间的RAM用于存储 xff0c 但是以一个循环的顺序去读写换 时间节点 xff1a 2014 1
  • pip install xxxx报错(一大堆红色exception)【解决】

    安装个distribute或nose或lpthw web或virtualenv 都可能出现下面问题 root 64 kali pip install distribute Collecting distribute Exception Tr
  • 防火墙关闭后不能ping通的解决办法

    修改被ping服务器的防火墙设置 xff1a 开始 控制面板 防火墙 高级 入站规则 文件和打印机共享 回显请求 ICMPv4 In 右键 启用 一共有两个 转载于 https www cnblogs com zhjx0521 p 1041
  • cmake设置mfc编译项目

    cmake minimum required VERSION 3 0 项目名 set PROJ NAME DCMLIB project PROJ NAME 设置变量 set CMAKE ALLOW LOOSE LOOP CONSTRUCTS
  • css 调转180度:transform: rotate(180deg);

    css 调转180度 xff1a transform rotate 180deg 转载于 https www cnblogs com shark1100913 p 8961298 html
  • OpenStack虚拟机冷迁移与热迁移

    一 虚拟机迁移分析 openstacvk虚拟机迁移分为冷迁移和热迁移两种方式 1 1冷迁移 xff1a 冷迁移 cold migration xff0c 也叫静态迁移 关闭电源的虚拟机进行迁移 通过冷迁移 xff0c 可以选择将关联的磁盘从