KVM 自动化脚本的使用及热/冷迁移
一、介绍
目录结构介绍
[root@kvm-server kvm]# tree -L 2
.
├── control # 控制脚本目录
│ ├── KVMInstall.sh # kvm服务安装脚本
│ ├── VMHost.sh # kvm虚拟机克隆脚本
│ └── VMTemplate.sh # kvm模板机安装脚本
├── mount # 此目录保持为空,为克隆时临时挂载使用
├── README.md
├── template # 模板文件存放位置
│ ├── register_instance.py # jumpserver 注册资产脚本
│ ├── template.conf # 克隆机网卡配置文件脚本
│ ├── template.qcow2 # 模板机磁盘镜像
│ └── template.xml # 配置文件
└── vdisks├── README.txt├── vmtest1.qcow2 # 克隆机磁盘镜像└── vmtest2.qcow2
使用脚本
宿主机: cd kvm
宿主机: sh KVMInstall.sh # 安装KVM服务
宿主机: sh VMTemplate.sh # 安装模板机
宿主机: virsh console template # 进入模板机,安装python3
template: yum install -y python3 python3-devel gcc
template: pip3 install requests httpsig -i https://mirrors.aliyun.com/pypi/simple
宿主机: sh VMHost.sh -a 192.168.96.223 -p 6667 -n vmtest1 -c 2 -m 4096
[root@kvm-server control]# sh VMHost.sh
"Usage: $0 [OPTION]..."-h, --help 查看帮助"-a, --address 虚拟机的IP地址"-p, --port 虚拟机的VNC端口"-n, --name 虚拟机的名称"-c, --cpus 选填,虚拟机的CPU数量,默认为1"-m, --memory 选填,虚拟机的内存大小,单位M,默认为512M"
二、部署
准备一台服务器,勾选cpu硬件辅助虚拟化配置,系统要求centos7.7以上
准备工作
[root@kvm-server ~]# cd /opt/
[root@kvm-server opt]# git clone https://gitea.beyourself.org.cn/newrain001/kvm.git
[root@kvm-server opt]# cd kvm/control/
# 安装kvm服务
[root@kvm-server control]# sh KVMInstall.sh
# 安装模板机,脚本运行后,注意进行手动配置
[root@kvm-server control]# sh VMTemplate.sh
# IMAGE_PATH=/tmp/CentOS-7-x86_64-Minimal-2009.iso # 注意修改脚本中镜像位置,并放置镜像# 进入模板机
[root@kvm-server control]# virsh console template
[root@localhost ~]# yum install -y python3 python3-devel gcc
# 退出模板机
[root@localhost ~]# pip3 install requests httpsig -i https://mirrors.aliyun.com/pypi/simple
准备jumpserver
在一台新机器中安装jumpserver
获取一些数据
1、jumpserver的url
2、资产列表的id
3、特权用户的id
4、jumpserver的key和secret
准备注册脚本
# 注意,这里是宿主机
[root@kvm-server control]# vim /opt/kvm/template/register_instance.py
# 修改以下内容,改为我们找到的id
jms_url = 'http://10.36.190.126'
# 资产列表id
nodes_id="938b475d-16f1-473e-8a4e-35177ada6ed4"
# 用户id
admin_user_id="9494beca-c35e-4091-99d7-912157603e5c"
KeyID = '31bed967-258c-474d-b151-5a95468fe242'
SecretID = '602329bf-39ff-4738-a601-f237cf2887aa'
克隆虚拟机
[root@kvm-server control]# sh VMHost.sh
"Usage: $0 [OPTION]..."-h, --help 查看帮助"-a, --address 虚拟机的IP地址"-p, --port 虚拟机的VNC端口"-n, --name 虚拟机的名称"-c, --cpus 选填,虚拟机的CPU数量,默认为1"-m, --memory 选填,虚拟机的内存大小,单位M,默认为512M"[root@kvm-server control]# sh VMHost.sh -a 10.36.190.210 -p 5900 -n xiaoming -c 2 -m 1024
使用vnc连接
在jumpserver 查看资产
接下来就可以授权登录了
三、热迁移
一、两台机器均做nfs
# 迁移机器
[root@localhost ~]# yum install nfs-utils
[root@localhost ~]# systemctl start nfs-server
[root@localhost ~]# systemctl enable nfs-server
[root@localhost ~]# vim /etc/exports
/opt/kvm/template/ 192.168.75.*(rw,sync,no_root_squash)[root@localhost ~]# exportfs -r# 迁移到的服务器
[root@localhost ~]# yum install nfs-utils
[root@localhost ~]# mount 192.168.75.128:/opt/kvm/template/ /opt/kvm/template/
[root@localhost ~]# vim /etc/fstab # 开机启动
192.168.75.128:/opt/kvm/template/ /opt/kvm/template/ nfs defaults 0 0
[root@localhost ~]# hostnamectl set-hostname hello.com # 修改主机名,不修改报错如下
# error: internal error: hostname on destination resolved to localhost, but migration requires an FQDN
[root@localhost ~]# vim /etc/libvirt/qemu.conf
user=root
group=root
[root@localhost ~]# systemctl restart libvirtd
# 迁移机器
[root@localhost ~]# vim /etc/hosts
192.168.75.129 hello.com
[root@localhost ~]# virsh migrate --live --verbose --unsafe --persistent template qemu+ssh://hello.com/system
二、冷迁移
冷迁移是在虚拟机关机状态下进行的迁移。在进行冷迁移时,虚拟机的状态被保存到磁盘文件中,然后将虚拟机的磁盘镜像和配置文件从源主机复制到目标主机。迁移完成后,虚拟机会在目标主机上重新启动。
操作步骤:
-
关闭源主机上的虚拟机。
-
复制虚拟机的磁盘镜像和配置文件到目标主机。
-
在目标主机上创建虚拟机,并指向复制过来的磁盘镜像和配置文件。
-
启动虚拟机。
冷迁移适用于不需要中断虚拟机服务的情况,但需要在迁移过程中短暂停止虚拟机。
# 冷迁移需要手动拷贝镜像文件到迁移后的服务器
virsh migrate --offline --verbose --unsafe --persistent template qemu+ssh://hello.com/system
相关文章:

KVM 自动化脚本的使用及热/冷迁移
一、介绍 目录结构介绍 [rootkvm-server kvm]# tree -L 2 . ├── control # 控制脚本目录 │ ├── KVMInstall.sh # kvm服务安装脚本 │ ├── VMHost.sh # kvm虚拟机克隆脚本 │ └── VMTemplate.sh # kvm模板机安装脚本 ├── mount # 此目录保持为空&…...

Unity中Shader裁剪空间推导(在Shader中使用)
文章目录 前言一、在Shader中使用转化矩阵1、在顶点着色器中定义转化矩阵2、用 UNITY_NEAR_CLIP_VALUE 区分平台矩阵3、定义一个枚举用于区分当前是处于什么相机 二、我们在DirectX平台下,看看效果1、正交相机下2、透视相机下3、最终代码 前言 在上一篇文章中&…...

ES的使用(Elasticsearch)
ES的使用(Elasticsearch) es是什么? es是非关系型数据库,是分布式文档数据库,本质上是一个JSON 文本 为什么要用es? 搜索速度快,近乎是实时的存储、检索数据 怎么使用es? 1.下载es的包(环境要…...

车牌识别技术,如何用python识别车牌号
目录 一.前言 二.运行环境 三.代码 四.识别效果 五.参考 一.前言 车牌识别技术(License Plate Recognition, LPR)在交通计算机视觉(Computer Vision, CV)领域具有非常重要的研究意义。以下是该技术的一些扩展说明࿱…...
爬虫工作量由小到大的思维转变---<第二十五章 Scrapy开始很快,越来越慢(追溯篇)>
爬虫工作量由小到大的思维转变---<第二十二章 Scrapy开始很快,越来越慢(诊断篇)>-CSDN博客 爬虫工作量由小到大的思维转变---<第二十三章 Scrapy开始很快,越来越慢(医病篇)>-CSDN博客 前言: 之前提到过,很多scrapy写出来之后,不…...

Servlet入门
目录 1.Servlet介绍 1.1什么是Servlet 1.2Servlet的使用方法 1.3Servlet接口的继承结构 2.Servlet快速入门 2.1创建javaweb项目 2.1.1创建maven工程 2.1.2添加webapp目录 2.2添加依赖 2.3创建servlet实例 2.4配置servlet 2.5设置打包方式 2.6部署web项目 3.servl…...
【C#与Redis】--高级主题--Redis 哨兵
一、简介 1.1 哨兵的概述 哨兵(Sentinel)是 Redis 分布式系统中用于监控和管理多个 Redis 服务器的组件。它的主要目标是确保 Redis 系统的高可用性,通过实时监测主节点和从节点的状态,及时发现并自动处理故障,保证系…...

linux安装python
文章目录 前言一、下载安装包二、安装1.安装依赖2.解压3.安装4.软链接5.验证 总结 前言 本篇文章介绍linux环境下安装python。 一、下载安装包 下载地址:官方网站 我们以最新的标准版为例 二、安装 1.安装依赖 yum -y install openssl-devel ncurses-devel li…...

【如何破坏单例模式(详解)】
✅如何破坏单例模式 💡典型解析✅拓展知识仓✅反射破坏单例✅反序列化破坏单例✅ObjectlnputStream ✅总结✅如何避免单例被破坏✅ 避免反射破坏单例✅ 避免反序列化破坏单例 💡典型解析 单例模式主要是通过把一个类的构造方法私有化,来避免重…...

什么是 SPI,它有什么用?
文章目录 什么是 SPI,它有什么用? 什么是 SPI,它有什么用? SPI 全称是 Service Provider Interface ,它是 JDK 内置的一种动态扩展点的实现。 简单来说,就是我们可以定义一个标准的接口,然后第三…...
FolkMQ 新的消息中间件,v1.0.25
简介 采用 “多路复用” “内存运行” “快照持久化” “Broker 集群模式”(可选)基于 Socket.D 网络应用协议 开发。全新设计,自主架构! 角色功能生产端发布消息(Qos0、Qos1)、发布定时消息ÿ…...

小程序入门-登录+首页
正常新建一个登录页面 创建首页和TatBar,实现登录后底部出现两个按钮 代码 "pages": ["pages/login/index","pages/index/index","pages/logs/logs" ],"tabBar": {"list": [{"pagePath"…...

React快速入门之组件
目录 组件JSX在标签使用{}嵌入JS表达式使用组件组件嵌套以🌲树的方式管理组件间的关系组件纯粹原则 组件 文件:Profile.js export default function Profile({isPacked true,head,stlyeTmp,src,size 80}) {if (isPacked) {head head &q…...

.NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
作者: Jon Galloway - Principal Program Manager, .NET Community Team Mehul Harry - Product Marketing Manager, .NET, Azure Marketing 排版:Alan Wang .NET Conf 2023 是有史以来规模最大的 .NET 会议,来自全球各地的演讲者进行了 100 …...

Hadoop入门学习笔记——六、连接到Hive
视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 六、连接到Hive6.1. 使用Hive的Shell客户端6.2. 使用Beel…...

【K8S 基本概念】Kurbernetes的架构和核心概念
目录 一、Kurbernetes 1.1 简介 1.2、K8S的特性: 1.3、docker和K8S: 1.4、K8S的作用: 1.5、K8S的特性: 二、K8S集群架构与组件: 三、K8S的核心组件: 一、master组件: 1、kube-apiserve…...

WPS复选框里打对号,显示小太阳或粗黑圆圈的问题解决方法
问题描述 WPS是时下最流行的字处理软件之一,是目前唯一可以和微软office办公套件相抗衡的国产软件。然而,在使用WPS的过程中也会出现一些莫名其妙的错误,如利用WPS打开docx文件时,如果文件包含复选框,经常会出…...

对“企业数据资源相关会计处理暂行规定“的个人理解
附:2023年数据资源入表白皮书下载: 关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光…...
JavaScript:函数隐含对象arguments/剩余参数. . .c/解构赋值
除了this,在函数内部还存在着一个隐含的参数arguments arguments 是一个类数组对象(伪数组) 调用函数时传递的所有实参,都被存储在arguments中 arguments[0] 表示的是第一个实参 arguments[1] 表示的是第二个实参 以此类推..…...

MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题
文章目录 设置mfc窗体背景颜色窗体设置背景颜色后解决控件白色背景解决重复修改控件文本后重叠的问题自绘控件被父窗体背景覆盖的问题 设置mfc窗体背景颜色 设置窗体的背景颜色非常简单,只需要在窗体的OnEraseBkgnd里面填充窗体背景就可以了,甚至直接画…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...