KVM虚拟机迁移

KVM虚拟机迁移

  • KVM虚拟机迁移,是将某一虚拟机上的环境和软件完全复制到另一台物理机上继续运行。KVM虚拟机迁移可以优化系统负载、重新规划KVM虚拟机布局并简化KVM虚拟机的管理维护工作。

  • KVM虚拟机迁移的主要应用场景如下所示。

    • 当一台KVM宿主机的负载比较高时,可将源KVM宿主机上的部分虚拟机迁移到负载较低的KVM宿主机中,以保证服务质量。

    • \通过KVM虚拟机迁移将多台负载较低的KVM宿主机上的KVM虚拟机集中迁移到某一台KVM宿主机上,从而达到节约资源的目的。

    • 在升级KVM宿主机硬件设备时,可以将KVM宿主机上运行的KVM虚拟机迁移到其他KVM宿主机上,以解决对硬件的依赖,从而实现业务不中断情况下对物理硬件设备的升级。

    • 跨地域迁移,实现KVM虚拟机的远程迁移。

  • 迁移方式可分为两种如下所示:

    • 静态迁移(Offline Migration)

      对于静态迁移,你可以在宿主机上保存一个完整的客户机镜像快照,然后在宿主机中关闭或者暂停该客户机,然后将该客户机的镜像文件复制到另一台宿主机中,使用在源主机中启动该客户机时的命令来启动复制过来的镜像。

    • 动态迁移(Live Migration)(Online Migration)

      动态迁移是保证KVM虚拟机上运行的应用正常提供服务的同时,让KVM虚拟机在不同的KVM宿主机之间进行迁移。动态迁移的过程仅有非常短暂的停机时间,甚至可以忽略不计,同时KVM虚拟机上已经打开的应用连接不会断开,依然保持不变。KVM的动态迁移有两种方式:一种是基于共享存储的动态迁移,另一种是基于数据块的动态迁移。

      • 基于共享存储的动态迁移
      • 基于数据块的动态迁移
利用VNC安装KVM虚拟机
#使用virt-install 命令安装虚拟机并设置VNC Viewer连接端口
[root@kvm01 ~]# systemctl stop firewalld
[root@kvm01 ~]# systemctl disable firewalld
#创建磁盘文件目录
[root@kvm1 ~]# mkdir -p /data_kvm/store
[root@kvm01 ~]# virt-install -n test01 -r 1024 --vcpus=1 --disk path=/data_kvm/store/test01.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /opt/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5901 --vnclisten=0.0.0.0
  • -n:指定虚拟机的名字。
  • -r:指定内存大小。
  • –vcpu:指定虚拟 CPU 个数。
  • –disk:指定磁盘文件放置位置及大小。
  • -w:制定所使用的网桥。
  • –autostart:设置虚拟机在宿主机开机时启动。
  • -c:指定镜像文件。
  • –vncport:通过 vnc viewer 连接的端口。
  • –vnclisten:通过 vnc
  • –accelerate:当安装qemu客户机时,如果支持可用kvm或kqemu内核加速能力,KVM加速器
打开VNC Viewer

​ 新建一个连接以安装虚拟机
在这里插入图片描述

#查看是否安装成功
[root@kvm01 ~]# virsh list --all
#启动虚拟机
[root@kvm01 ~]# virsh start test01
#再次连接test01虚拟机,并登录系统

静态迁移

  • 静态迁移需要在虚拟机关闭的情况下执行
#查看test01虚拟机当前状态‘
[root@kvm01 ~]# virsh list --all
#如果为开启状态则关闭
[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# virsh list --all 
#导出虚拟机 test01 的 xml 配置文件
[root@kvm01 ~]# virsh dumpxml test01 > test01.xml 
[root@kvm01 ~]# ls
#定位虚拟机 test01 的磁盘文件
[root@kvm01 ~]# virsh domblklist test01
#拷贝配置文件与磁盘文件到迁移主机上 先在迁移主机上创建目录
[root@kvm2 ~]# mkdir -p /data_kvm/store
#将kvm01拷贝到kvm02上
[root@kvm01 ~]# scp test01.xml 192.168.10.105:/etc/libvirt/qemu/
[root@kvm01 ~]# scp /data_kvm/store/test01.qcow2 192.168.10.105:/data_kvm/store/
  • 在kvm02上配置和启动目标虚拟机

    #查看被迁移过来的配置文件和磁盘文件 
    [root@kvm02 ~]# ls -l /etc/libvirt/qemu
    [root@kvm02 ~]# ls -l /data_kvm/store/
    #重新定义虚拟机 test01 
    [root@kvm02 ~]# virsh define /etc/libvirt/qemu/test01.xml 
    [root@kvm02 ~]# virsh list --all
    #启动虚拟机 test01 
    [root@kvm02 ~]# virsh start test01
    [root@kvm02 ~]# virsh list --all
    #打开虚拟机管理器,查看虚拟机的运行
    [root@kvm02 ~]# virt-manager
    

动态迁移

  • 基于共享存储的动态迁移

    配置NFS共享存储

#打开新的服务器配置NFS服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostnamectl set-hostname kvmnfs
[root@localhost ~]# bash
[root@kvmnfs ~]# yum -y install nfs-utils
#配置共享目录 创建共享目录
[root@kvmnfs ~]# mkdir /data 
[root@kvmnfs ~]# chown -R 777 /data/
[root@kvmnfs ~]# vim /etc/exports
/data 192.168.10.0/24(rw,sync,no_root_squash)
#启动并检查 NFS 服务
[root@kvmnfs ~]# systemctl start nfs 
[root@kvmnfs ~]# systemctl start rpcbind 
[root@kvmnfs ~]# showmount -e localhost

挂载NFS目录

#主机 kvm01和kvm02上创建 kgc 目录
[root@kvm01 ~]# mkdir /data_kvm/kgc
[root@kvm02 ~]# mkdir /data_kvm/kgc
#挂载共享目录
[root@kvm01 ~]# mount -t nfs 192.168.10.101:/data /data_kvm/kgc 
[root@kvm01 ~]# df
[root@kvm02 ~]# mount -t nfs 192.168.10.101:/data /data_kvm/kgc 
[root@kvm02 ~]# df
#设置自动挂载 
[root@kvm01 ~]# vim /etc/fstab
192.168.10.101:/data /data_kvm/kgc nfs defaults 0 0

通过现有的磁盘文件生成虚拟机

#拷贝qcow2磁盘文件
[root@kvm01 ~]# cp /opt/CentOS-7-x86_64-GenericCloud-2009.qcow2 /data_kvm/store/test02.qcow2
#部署虚拟机 设置root用户密码
[root@kvm01 ~]# virt-customize -a /data_kvm/kgc/test02.qcow2 --root-password password:aptech
#安装询价
[root@kvm01 ~]# virt-install 
--name=test02 -r 1024 --vcpus=1 --disk device=disk,bus=virtio,path='/data_kvm/kgc/test02.qcow2',size=10 \-w bridge:br0 --virt-type=kvm --boot hd

动态迁移

#查看 kvm01 和 kvm02主机上虚拟机的运行状态 
[root@kvm01 ~]# virsh list --all
[root@kvm02 ~]# virsh list --all
#更改kvm01文件
[root@kvm01 ~]# virsh shutdown test02 
[root@kvm01 ~]# virsh edit test02
#找到<driver name='qemu' type='qcow2'/> 该行
#添加以下内容
cache='none'
#启动test02
[root@kvm01 ~]# virsh start test02 
[root@kvm01 ~]# virsh list --all
#迁移虚拟到kvm02
[root@kvm01 ~]# virsh migrate --live --verbose test02 qemu+ssh://192.168.10.105/system tcp://192.168.10.105
migrate :迁移
--verbose :显示迁移的进度
--live:实时迁移
#创建虚拟机 test02 配置文件 
[root@kvm02 ~]# ls -l /etc/libvirt/qemu
[root@kvm02 ~]# virsh dumpxml test02 > /etc/libvirt/qemu/test02.xml 
[root@kvm02 ~]# cd /etc/libvirt/qemu/ 
[root@kvm02 qemu]# ll
#定义虚拟机 test02 配置文件
[root@kvm02 qemu]# virsh define /etc/libvirt/qemu/test02.xml
  • 基于数据块的动态迁移

    在kvm01和kvm02上安装依赖包,需要使用阿里的yum源

[root@kvm02 ~]# yum -y install centos-release-qemu-ev 
[root@kvm02 ~]# vim /etc/yum.repos.d/CentOS-QEMU-EV.repo
#更改以下内容使用国内的源
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=virt-kvm-common
[root@kvm02 ~]# yum -y install qemu-kvm-ev
[root@kvm02 ~]# reboot

​ 迁移前准备工作

[root@kvm01 ~]# vim /etc/hosts
192.168.10.201 kvm01
192.168.10.202 kvm02[root@kvm01 ~]# virsh list --all 
[root@kvm01 ~]# virsh shutdown test01[root@kvm01 ~]# virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2 

​ kvm02 上的操作

[root@kvm02 ~]# vim /etc/hosts
192.168.10.201 kvm01
192.168.10.202 kvm02
[root@kvm02 store]# virsh pool-list --all
[root@kvm02 ~]# mkdir -p /data_kvm/store
[root@kvm02 store]# qemu-img create -f qcow2 /data_kvm/store/test03.qcow2 10G

​ 在kvm01主机上执行迁移操作

[root@kvm01 ~]# virsh start test03
[root@kvm01 ~]# virsh migrate test03 qemu+ssh://192.168.10.202/system --live --persistent --undefinesource --copy-storage-all --verbose
--persistent :将域保留为目标主机物理机器的持久性状态
--undefinesource:删除源主机物理机器上的客户机虚拟机
--copy-storage-all :使用全磁盘复制的非共享存储进行迁移
#验证是否迁移成功
[root@kvm01 ~]# virsh list --all
[root@kvm02 ~]# virsh list --all

KVM服务

KSM服务介绍

  • Linux内核特性称为Kernel Shared Memory(基于内核的共享内存)或Kernel Samepage Merging。
  • KSMD作为守护进程,能够合并内存页面来增加并发虚拟机的数量。KSM 适用于宿主机过载的情况下。
  • KSM 通过减少每个虚拟机实际占用的内存数,可以让多个虚拟机分配的内存数量之和大于物理内存数量。
  • 而对于相同类型的虚拟机,在物理内存量不变的情况下,可以在一个宿主机中创建更多虚拟机,从而提高虚拟化部署的密度,同时也可以提高物理资源的利用效率。
检查当前 Linux 系统是否支持 KSM
[root@kvm02 ~]# egrep -i ksm /boot/config-3.10.0-1160.el7.x86_64 
#看到该行则支持
CONFIG_KSM=y
配置KSM内存优化
#先将虚拟机test01克隆出三份  克隆前先关闭
[root@kvm02 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2
[root@kvm02 ~]# virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2
[root@kvm02 ~]# virt-clone -o test01 -n test04 -f /data_kvm/store/test04.qcow2
#开启所有的虚拟机
[root@kvm02 ~]# virsh start test01
[root@kvm02 ~]# virsh start test02
[root@kvm02 ~]# virsh start test03
[root@kvm02 ~]# virsh start test04
#查看Linux宿主机的内存使用情况
[root@kvm02 ~]# free
[root@kvm02 ~]# systemctl start ksm 
[root@kvm02 ~]# systemctl start ksmtuned
[root@kvm02 ~]# echo 1 > /sys/kernel/mm/ksm/run
#再次查看Linux宿主机的内存使用情况
[root@kvm02 ~]# free

tart test03
[root@kvm02 ~]# virsh start test04
#查看Linux宿主机的内存使用情况
[root@kvm02 ~]# free
[root@kvm02 ~]# systemctl start ksm
[root@kvm02 ~]# systemctl start ksmtuned
[root@kvm02 ~]# echo 1 > /sys/kernel/mm/ksm/run
#再次查看Linux宿主机的内存使用情况
[root@kvm02 ~]# free


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387557.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++重载左移运算符

通过重载左移运算符&#xff0c;可以实现cout << p;直接输出类对象的各个属性。 其只能使用全局函数重载。 注意cout的定义如下&#xff1a; _EXPORT_STD extern "C" __PURE_APPDOMAIN_GLOBAL _CRTDATA2_IMPORT ostream cout; 也就是说我们一直用来输出的c…

公布一批脸书爬虫(facebook)IP地址,真实采集数据

一、数据来源&#xff1a; 1、这批脸书爬虫&#xff08;facebook&#xff09;IP来源于尚贤达猎头公司网站采集数据&#xff1b; ​ 2、数据采集时间段&#xff1a;2023年10月-2024年7月&#xff1b; 3、判断标准&#xff1a;主要根据用户代理是否包含“facebook”和IP核实。…

《程序猿入职必会(4) · Vue 完成 CURD 案例 》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

【C语言】指针基础知识理解【续】

1. ⼆级指针 指针变量也是变量&#xff0c;是变量就有地址&#xff0c;那指针变量的地址存放在哪⾥&#xff1f;这就是 ⼆级指针 。 1.1 引入二级指针 由于一级指针已经很熟悉&#xff0c;这里就不再赘述&#xff0c;这里我们重点探讨二级指针 下面先简单使用一个二级指针看…

视图,存储过程和触发器

目录 视图 创建视图&#xff1a; 视图的使用 查看库中所有的视图 删除视图 视图的作用&#xff1a; 存储过程&#xff1a; 为什么使用存储过程&#xff1f; 什么是存储过程&#xff1f; 存储过程的创建 创建一个最简单的存储过程 使用存储过程 删除存储过程 带参的存储…

【投标】运维服务方案(2024Word完整版)

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件资料清单列表部分文档&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&a…

kvm虚拟化平台部署

kvm虚拟化平台部署 kvm概念简介 kvm自linux2.6版本以后就整合到内核中&#xff0c;因此可以看做是一个原生架构. kvm虚拟化架构 硬件底层提供物理层面的硬件支持 linux&#xff08;host&#xff09;&#xff0c;就相当于这个架构中的宿主机&#xff0c;上面运行了多个虚拟机。…

科普文:分布式数据一致性协议Paxos

1 什么是Paxos Paxos协议其实说的就是Paxos算法, Paxos算法是基于消息传递且具有高度容错特性的一致性算 法&#xff0c;是目前公认的解决分布式一致性问题最有效的算法之一。 Paxos由 莱斯利兰伯特(Leslie Lamport)于1998年在《The Part-Time Parliament》论文中首次公 开&…

装饰大师——装饰模式(Java实现)

引言 大家好&#xff0c;上期我们介绍了装饰模式在Python中的实现&#xff0c;今天&#xff0c;我们将继续探讨装饰模式&#xff0c;并展示如何在Java中实现它。 装饰模式概述 装饰模式的核心思想是将功能附加到对象上&#xff0c;而不是通过继承来实现&#xff0c;这种模式…

安防监控视频平台LntonAIServer视频监控管理平台裸土检测算法

LntonAIServer裸土检测算法代表了一种先进的土地监测技术&#xff0c;它利用人工智能的强劲能力&#xff0c;实现了对裸土区域的自动识别和实时监测。该算法的推出&#xff0c;为环境保护、农业管理以及城市规划等多个领域提供了创新的解决方案&#xff0c;其应用前景广阔&…

如何准备 Java API 文档以供下游对接

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

QT:控件圆角设置、固定窗口大小

实现控件圆角度设置//使用的是setStyleSheet方法 //改变的控件是QTextEdit&#xff0c;如果你想改变其他控件&#xff0c;将QTextEdit进行更换 this->setStyleSheet("QTextEdit{background-color:#FFFFFF;border-top-left-radius:15px;border-top-right-radius:15px;bo…

是否掌握数据结构对于IT职业发展至关重要?

算法跟代码实现有时候是两回事&#xff0c;在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#…

Chat2DB新推Chat2Excel,让数据对话跃然纸上

Excel 智能问答 Chat2Excel 1. 创建新聊天 点击左侧AI对话&#xff0c;进入对话界面。点击加号""按钮以开始一个新的对话。 新建对话选择表格类型, 选择上传excel文档。 双击对话名称可以修改对话名称。现在我们就可以开始针对于Excel进行智能问答了。 2. 智能…

智能小家电的跨境渠道有哪些?入驻百思买还是选择做亚马逊?——WAYLI威利跨境助力商家

在全球化贸易背景下&#xff0c;智能小家电企业面临机遇与挑战。消费者追求高品质生活&#xff0c;智能小家电市场需求旺盛&#xff0c;跨境销售成为拓展市场、提升品牌影响力的关键。选择合适的跨境渠道至关重要。以下是智能小家电跨境销售的主要渠道&#xff0c;并深入分析了…

layui 乱入前端

功能包含 本实例代码为部分傻瓜框架&#xff0c;插入引用layui。因为样式必须保证跟系统一致&#xff0c;所以大部分功能都是自定义的。代码仅供需要用layui框架&#xff0c;但原项目又不是layui搭建的提供解题思路。代码较为通用 自定义分页功能自定义筛选列功能行内编辑下拉、…

【探索Linux】P.43(网络层 —— IP协议)

阅读导航 引言一、IP协议基本概念二、IP协议头格式三、网段划分1. 网络号和主机号2. 引入子网掩码&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;默认子网掩码&#xff08;3&#xff09;子网掩码的作用&#xff08;4&#xff09;子网掩码与IP地址的结合&#xff…

国内NAT服务器docker方式搭建rustdesk服务

前言 如果遇到10054,就不要设置id服务器!!! 由于遇到大带宽,但是又贵,所以就NAT的啦,但是只有ipv4共享和一个ipv6,带宽50MB(活动免费会升130MB~) https://bigchick.xyz/aff.php?aff322 月付-5 循环 &#xff1a;CM-CQ-Monthly-5 年付-60循环&#xff1a;CM-CQ-Annually-60官方…

Prometheus安装部署

文章目录 1.Prometheus(普罗米修斯)安装部署1.1部署环境准备1.2部署prometheus1.3主机数据展示 2.Grafana安装部署2.1部署Grafana2.2配置Grafana数据源2.2配置Grafana仪表板 3.AlertManager安装部署3.1部署alertmanager3.2告警邮件发送配置3.3测试邮件告警效果3.4自定义邮件告警…

昇思25天学习打卡营第9天|RNN实现情感分类

第十天的不小心把第九天的覆盖了。现在重新补上。 情感分类是自然语言处理中的经典任务&#xff0c;是典型的分类问题。输入一句话&#xff0c;然后去语义理解这句话是褒义贬义还是中性的。不同的情感语境下理解的大基调是不同的。 RRN情感分类也是一个分类模型&#xff0c;是…