KVM-安装-使用-迁移

news2024/12/23 13:43:43

在这里插入图片描述

一. KVM安装

1. 基础安装

# 下载源
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 安装基础软件
yum -y install tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet 

# 查看是否支持虚拟化
egrep 'vmx|svm' /proc/cpuinfo

# 查看物理机SN号
dmidecode -t 1

Serial Number: USE933N3P3

# 是否有KVM模块
lsmod | grep kvm

kvm_intel             188740  0 
kvm                   637289  1 kvm_intel
irqbypass              13503  1 kvm

# 安装
yum install -y kvm virt-*  libvirt  bridge-utils qemu-img acpid

# 启动
systemctl enable --now libvirtd
systemctl enable --now acpid.service

# kvm 虚拟机镜像管理工具 guestfish, 可以在虚拟机关机的情况下,对镜像内的文件系统做修改,例如,从模板机克隆了一台虚拟机,可以使用 guestfish 修改镜像里面的主机名、ip、网关等的信息,修改保存后开启虚拟机就可以ssh连接进去,对提升工作效率有很大的帮助
# 例如对磁盘文件进行修改: virt-edit -a /var/lib/libvirt/images/centos6.5-template.qcow2 /etc/hosts
yum -y install libguestfs-tools

2. VNC

# 安装VNC
yum -y install tigervnc tigervnc-server

# 复制vnc的启动操作脚本, vncserver@:1.service中的:1表示桌面号,启动的端口号就是5900+桌面号,即是5901,如果再有一个就是2啦,端口号加1就是5902,以此类推
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

# 编辑文件,再 ExecStart 中将用户改为 root,也可以用普通用户启动
vim /etc/systemd/system/vncserver@\:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper root %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

# 设置密码, 输入2次
vncpasswd

# 选择n
Would you like to enter a view-only password (y/n)? n

# 启动
systemctl daemon-reload
systemctl enable --now vncserver@\:1.service

# 检查是否启动
netstat -lnpt | grep Xvnc

# VNC端口, 一般是5901
ps -ef | grep -i xvnc

3. 创建并绑定网桥

# 创建网桥,
brctl addbr br0

# 可以按照配置文件操作
### 给网桥绑定网卡,会导致ssh连接失败,一般需要跑机房, 3条命令一起执行
# brctl addif br0 eth0;ip addr del dev eth0 192.168.1.183/24;ifconfig br0 192.168.1.183/24 up

# 创建网桥br0的文件,复制eth0的网卡文件,然后重启, eth0网卡不能有IP地址,而是直接走网桥, ifcfg-eth0的网卡文件也不能删除
cd /etc/sysconfig/network-scripts/
[root@yeemiao-kvm-e194183-test network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BRIDGE=br0		# 给网桥绑定网卡
NAME=eth0
DEVICE=eth0
ONBOOT=yes

[root@yeemiao-kvm-e194183-test network-scripts]# vim ifcfg-br0
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
#UUID=6eb246a9-7459-4f41-ab0c-6fe22f82c08b
DEVICE=br0
ONBOOT=yes
IPV6_PRIVACY=no
IPADDR=192.168.1.183
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1

# 全局网关文件
vim /etc/sysconfig/network
GATEWAY=192.168.1.1

# 全局DNS文件
vim /etc/resolv.conf

4. 创建虚拟机

# 创建虚拟机
virt-install --name=test  --ram=8192  --vcpus=4 --os-type=linux --os-variant=centos7.0  --network bridge=br0 --graphics=vnc,password=123,port=5913,listen=0.0.0.0 --noautoconsole --accelerate --cdrom=/migrate/CentOS-7-x86_64-DVD-1804.iso --disk path=/migrate/ariot1.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100

# 克隆虚拟机
-o 	被克隆虚拟机
-n 	克隆后新的虚拟机
-f 	克隆后新虚拟机的磁盘

# 根据磁盘文件克隆
virt-clone -o k8s-node-for-clone  -n yunwei-k8s-worker33_192.168.1.45 -f /data/kvm/yunwei-k8s-worker33_192.168.1.45.img

迁移对比

二. 迁移方式

1. KVM 迁移及常用命令

# 列出虚拟机
virsh list --all

# 关机, 有些时候 shutdown 没反应 是因为Linux上没有装 acpid
virsh shutdown $name

# 克隆虚拟机
virt-clone -o base-image_192.168.1.99 -n zabbix_control_192.168.1.208 -f /data/kvm/zabbix_control_192.168.1.208.qcow2

# 安装 acpid, acpid是一个用户空间的服务进程,充当Linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序
yum install acpid -y
systemctl enable acpid; systemctl start acpid

# 然后再关机
virsh shutdown $name

# 如果还不行那就拔虚拟机电源
virsh destroy $name

# 备份虚拟机配置,这里以 Server2016_jenkins 虚拟机为例
virsh dumpxml Server2016_jenkins >Server2016_jenkins.xml

# 暂停的虚拟机恢复
virsh resume kvm-CentOS-7-130

# 找到虚拟机的磁盘路径
virsh domblklist Server2016_jenkins

# 查看该虚拟机的磁盘格式
[root@centos18 ~]# qemu-img info /virmachine/Server2016_jenkins
image: /virmachine/Server2016_jenkins
file format: qcow2
virtual size: 256G (274877906944 bytes)
disk size: 256G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true

# 创建虚拟磁盘
qemu-img create -f qcow2 /home/kvm/sonarqube_192.168.204.44-1.qcow2 150g

#  复制磁盘文件到
scp Server2016_jenkins 172.16.206.17:/bigdata/vmdisk/

# 修改虚拟机配置,过滤 file=, 修改他的磁盘路径,改为/bigdata/vmdisk/Server2016_jenkins
vim Server2016_jenkins.xml
<source file='/bigdata/vmdisk/Server2016_jenkins'/>

# 修改虚拟机名称, 名称最好加上虚拟机的ip,方便查找
<name>dc-biz-082ca69-test_192.168.1.207</name>

# 定义--通过xml文件创建虚拟机
virsh define Server2016_jenkins.xml

# 启动
virsh start Server2016_jenkins

# 查看虚拟机VNC号, 可以通过VNC软件连接到虚拟机
virsh vncdisplay Server2016_jenkins

# 物理机进入虚拟机console
virsh console Server2016_jenkins

# 修改虚拟机信息
virsh edit Server2016_jenkins

# 给虚拟机拍摄快照
virsh snapshot-create Server2016_jenkins

# 查看快照
[root@kvm-232 ~]# virsh snapshot-list zabbix_control_192.168.1.208 
 名称               生成时间              状态
------------------------------------------------------------
 1677122883           2023-02-23 11:28:03 +0800 running

# 恢复快照, 格式: virsh snapshot-revert 【虚拟机名】 【快照名】
virsh snapshot-revert zabbix_control_192.168.1.208 1677122883

# 删除快照
virsh snapshot-delet Server2016_jenkins

## 删除虚拟机
# 先找到虚拟机的磁盘文件,然后直接删除磁盘,取消定义就可以删除
virsh domblklist Server2016_jenkins
virsh undefine Server2016_jenkins

# 虚拟机关机
virsh shutdown Server2016_jenkins

# 修改磁盘文件内容,需要等待一下,比如修改磁盘的 /etc/fstab 文件
virt-edit -a dc-biz-082ca69-test_192.168.1.207.qcow2 /etc/fstab

# 虚拟机启动CPU问题导致启动不了,将虚拟机的xml文件中CPU的配置修改为本机的(如下查询到的) <model>Broadwell-IBRS</model>
[root@kvm-232 kvm]# virsh capabilities
<capabilities>

  <host>
    <uuid>4c4c4544-0031-5210-8044-c7c04f375633</uuid>
    <cpu>
      <arch>x86_64</arch>
      <model>Broadwell-IBRS</model>
      <vendor>Intel</vendor>
      <microcode version='218104699'/>
      <counter name='tsc' frequency='2095077000' scaling='yes'/>
      <topology sockets='1' cores='12' threads='2'/>

# 修改xml文件的CPU类型,过滤model
<model>Broadwell-IBRS</model>

# 给虚拟机冷加磁盘, 也可以直接修改xml文件,然后define
virsh edit dc-biz-6d58fd7-test_192.168.1.206

# 先将虚拟机关机,然后添加一段disk信息,需要修改 target 信息和磁盘路径
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='writeback'/>
      <source file='/data/kvm/dc-biz-6d58fd7-test_192.168.1.206-1.qcow2'/>
      <target dev='vdb' bus='virtio'/>
    </disk>

# 启动虚拟机, 然后分区==》文件系统==》挂载==》/etc/fstab

# 给虚拟机热加磁盘,virsh进入控制台,writeback 模式,唯一的缺点就是写操作的数据掉电可能丢失,无法保证数据完整性,是默认缓存模式
[root@kvm-232 kvm]# cat disk.xml 
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='writeback'/>
      <source file='/data/kvm/dc-biz-6d58fd7-test_192.168.1.206-1.qcow2'/>
      <target dev='vdb' bus='virtio'/>
</disk>

# 进入控制台
virsh
attach-device --persistent dc-biz-6d58fd7-test_192.168.1.206 disk.xml

# 进入后如下
virsh # attach-device --persistent dc-biz-6d58fd7-test_192.168.1.206 disk.xml
成功附加设备


# kvm虚拟机无法通过shutdown关机,是因为操作系统安装的centos为最小化安装,没有安装电源管理程序,也就是acpid
yum install acpid -y
systemctl enable --now acpid.service
  • 还原结果

2. VMware迁移

​ ● 通过克隆迁移, 克隆的虚拟机名字, 可以在后面价格后缀, 迁移成功后,删除原来的再改回来即可

img

img

​ ● 迁移后

img

3. Kvm迁移Esxi

● 迁移前一定要记录该虚拟机的配置

● 风险是网卡信息没了,迁移后需要重新配置

# 关闭正在运行的虚拟机
virsh shutdown moon-mk1

# 找到磁盘文件
[root@huawei-rh2288h-v3 ~]# virsh dumpxml moon-mk1 |grep file=
      <source file='/var/lib/libvirt/images/moon-mk1.qcow2'/>

# 先备份下qcow2文件, 然后将qcow2传输到VMware的机器上
# 将kvm的qcow2文件转为为VMware可识别的vmdk
qemu-img convert /var/lib/libvirt/images/moon-mk1.qcow2 -O vmdksoway1.vmdk


# 磁盘二次转换, thin的意思是 将新磁盘文件使用 精简置备模式, 如果不转换,直接就是起不来的
vmkfstools -i soway1.vmdk  -d thin wayso.vmdk

# 最终得到文件
[root@localhost:/vmfs/volumes/59e733d9-f2f5d707-87a4-a0f4793694d2/soway] ls -l
total 1343488
-rw-------    1 root     root     21474836480 Aug 19 14:43 wayso-flat.vmdk
-rw-------    1 root     root           516 Aug 19 14:43 wayso.vmdk
# 正常启动会报错, 救援模式是可以正常启动的, 需要进入救援模式执行
chroot /mnt/sysimage 
dracut --regenerate-all -f
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot

# 迁移后IP地址没了,但是其他资源在,需要配置IP地址信息
vim /etc/sysconfig/network-scripts/ifcfg-eth

 TYPE="Ethernet"
 BOOTPROTO="none"
 DEFROUTE="yes"
 IPV4_FAILURE_FATAL="no"
 IPV6INIT="yes"
 IPV6_AUTOCONF="yes"
 IPV6_DEFROUTE="yes"
 IPV6_FAILURE_FATAL="no"
 IPV6_ADDR_GEN_MODE="stable-privacy"
 NAME="eth0"
 DEVICE="eth0"
 ONBOOT="yes"
 IPADDR=172.16.206.234
 NETMASK=255.255.255.0
 GATEWAY=172.16.206.1
 DNS1=1.2.4.8
 DNS2=114.114.114.114
 
 # 重启
 systemctl restart network

4. Esxi迁移KVM

1、 找到物理机下的真实存储磁盘

img

  • esxiToKvm.vmdk可以看作是是esxiToKvm-flat.vmdk的链接文件

2、本地服务器和目标服务器安装转换工具

yum install libvirt* virt-* qemu-kvm* -y

3、*.vmdk转换为*.qcow2

sudo qemu-img convert -O qcow2 esxiToKvm-flat.vmdk ./etk-flat.qcow2

4、将转换好的qcow2文件传到目标服务器

scp etk-flat.qcow2  root@ip:/home

5、测试*.qcow2是否可用

qemu-img info /home/etk-flat.qcow2

6、开始安装

sudo virt-install --name=etk7  --ram=8096  --vcpus=4 --os-type=linux --os-variant=centos7.0  --network bridge=br1 --graphics=vnc,password=123,port=5911,listen=0.0.0.0 --noautoconsole --accelerate --cdrom=/migrate/CentOS-7-x86_64-DVD-1804.iso --disk path=/migrate/etk-flat.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=40

7、使用vnc进行连接刚创建的etk7,进入救援模式

# 正常启动会报错, 需要进入救援模式进行一些设置,进入救援模式执行
chroot /mnt/sysimage 
dracut --regenerate-all -f && grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot

8、启动etk7,登录后核对信息

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt关于qss文件的添加使用

把ui设计得更加的养眼&#xff0c;肯定需要对控件的属性进行设置&#xff0c;qt中就是关于qss文件的使用。 那么如何创建和添加qss文件呢 1.新建一个文本文件的txt 2.将文本文件的后缀改为qss&#xff08;类比html&#xff09; 3.放置到项目的资源文件夹下 4.添加资源文件 5.在…

基于Kubernetes的微服务架构,你学废了吗?

至于服务网关&#xff0c;虽然保留了 Zuul&#xff0c;但没有采用 Kubernetes 的 Ingress 来替代。这里有两个主要考虑因素&#xff1a;首先&#xff0c;Ingress Controller 并非 Kubernetes 的内置组件&#xff0c;有多种可选方案&#xff08;例如 KONG、Nginx、Haproxy 等&am…

asdf安装不同版本的nodejs和yarn和pnpm

安装asdf 安装nodejs nodejs版本 目前项目中常用的是14、16和18 安装插件 asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin-add yarn https://github.com/twuni/asdf-yarn.git可以查看获取所有的nodejs版本 asdf list all nodejs有很多找…

Wireshark网络协议分析 - TCP协议

在我的博客阅读本文 文章目录 1. 基础2. 实战2.1. 用Go写一个简单的TCP服务器与客户端2.2. Wireshark抓包分析2.3. 限制数据包的大小——MSS与MTU2.4. 保证TCP的有序传输——Seq&#xff0c;Len与Ack2.5. TCP头标志位——URG&#xff0c;ACK&#xff0c;PSH&#xff0c;RST&…

【前端素材】bootstrap3 实现地产置业公司source网页设计

一、需求分析 地产置业公司的网页通常是该公司的官方网站&#xff0c;旨在向访问者提供相关信息和服务。这些网页通常具有以下功能&#xff1a; 公司介绍&#xff1a;网页通常包含有关公司背景、历史、核心价值观和使命等方面的信息。此部分帮助访问者了解公司的身份和目标。 …

visual studio2022专业版安装步骤

目录 一、Visual studio下载二、创建C#项目——Hello World三、专业版秘钥激活 一、Visual studio下载 首先进入下载官网 先下载2022专业版&#xff0c;等等后面还需要选环境 我勾选了以下几个和c#开发有关的&#xff0c;后面缺什么还可以再安装所有以少勾了问题也不大 然后…

solidworks 焊接型材库

型材库中有大部分型材 H型钢有49种 八角钢有40种 扁钢有60种 不等边钢有84种 槽钢有41种 也可以按照自己需要的去添加 下载地址https://download.csdn.net/download/jintaihu/19347986

《金融电子化》昆仑银行在应用性能监控(APM)平台的实践与探索

《金融电子化》昆仑银行在应用性能监控&#xff08;APM&#xff09;平台的实践与探索 中国人民银行印发的《金融科技发展规划&#xff08;2022-2025年&#xff09;》是对金融科技发展的重要引领。规划强调了金融科技在推动金融行业现代化转型、提升金融服务效率和风险防控水平…

体验 AutoGen Studio - 微软推出的友好多智能体协作框架

体验 AutoGen Studio - 微软推出的友好多智能体协作框架 - 知乎 最近分别体验了CrewAI、MetaGPT v0.6、Autogen Studio&#xff0c;了解了AI Agent 相关的知识。 它们的区别 可能有人要问&#xff1a;AutoGen我知道&#xff0c;那Autogen Studio是什么&#xff1f; https://g…

直播不仅可以带货,还可以远程协作

直播是一种非常直观高效的信息共享模式&#xff0c;目前直播带货比较火&#xff0c;但我也不懂&#xff0c;现就我涉及的领域和实践做一些分享&#xff0c;目前我所做的直接互动分发系统在软硬件全系统闭环下&#xff0c;结合100ms级的低延迟&#xff0c;基本可以让人有深入其境…

Vue_Router_守卫

路由守卫&#xff1a;路由进行权限控制。 分为&#xff1a;全局守卫&#xff0c;独享守卫&#xff0c;组件内守卫。 全局守卫 //创建并暴露 路由器 const routernew Vrouter({mode:"hash"//"hash路径出现#但是兼容性强&#xff0c;history没有#兼容性差"…

ImageNet预训练图像分类模型预测单张图像

导入基础工具包 import osimport cv2import pandas as pd import numpy as npimport torchimport matplotlib.pyplot as plt %matplotlib inline 计算设备确定 # 有 GPU 就用 GPU&#xff0c;没有就用 CPU device torch.device(cuda:0 if torch.cuda.is_available() else c…

pytorch学习笔记(十二)

以下代码是以CIFAR10这个10分类的图片数据集训练过程的完整的代码。 训练部分 train.py主要包含以下几个部件&#xff1a; 准备训练、测试数据集用DateLoader加载两个数据集&#xff0c;要设置好batchsize创建网络模型&#xff08;具体模型在model.py中&#xff09;设置损失函…

深入理解G0和G1指令:C++中的实现与激光雕刻应用

系列文章 ⭐深入理解G0和G1指令&#xff1a;C中的实现与激光雕刻应用⭐基于二值化图像转GCode的单向扫描实现⭐基于二值化图像转GCode的双向扫描实现⭐基于二值化图像转GCode的斜向扫描实现基于二值化图像转GCode的螺旋扫描实现基于OpenCV灰度图像转GCode的单向扫描实现基于Op…

Apple Pencil如何连接iPad?这里提供详细步骤

如果你刚拿起一支Apple Pencil&#xff0c;想和iPad一起使用&#xff0c;你需要先连接设备。将Apple Pencil与iPad配对的方法因你拥有的铅笔而异。 一旦你将Apple Pencil连接到iPad&#xff0c;你就可以利用这些方便的功能。你可以记下手写笔记&#xff0c;使用Scribble功能&a…

H5 嵌套iframe并设置全屏

H5 嵌套iframe并设置全屏 上图上代码 <template><view class"mp-large-screen-box"><view class"mp-large-screen-count"><view class"mp-mini-btn-color mp-box-count" hover-class"mp-mini-btn-hover" clic…

QEMU - e1000全虚拟化前端与TAP/TUN后端流程简析

目录 1. Host -> Guest 2.Guest ->Host 3. 如何修改以支持TUN设备的后端&#xff1f; 4. 相关 QEMU 源码 5. 实验 1. Host -> Guest 2.Guest ->Host 3. 如何修改以支持TUN设备的后端&#xff1f; 1. 简单通过后端网卡名字来判断是TUN还是TAP。 2. 需要前端全…

gdp调试—Linux

目录 介绍 使用 介绍 代码分为debug模式和release模式 如果一份代码要被调试&#xff0c;这份代码必须是debug Linux下编译代码默认是是release模式 如果你想代码是debug模式 必须加上 - g 小提&#xff1a; vim默认&#xff1a;命令模式 gcc默认&#xff1a;releas…

华为数通方向HCIP-DataCom H12-831题库(简答题01-27)

第01题 第02题 第03题 第04题 第05题 IS-IS是链路状态路由协议,使用SPF算法进行路由计算。某园区同时部署了IPV4和IPv6并运行IS-IS实现网络的互联与通。如图所示,该网络IPV4和IPV6开销相同,R1和R4只支持IPV4缺省情况下,计算形成的IPV6最短路径树中,R2访问R6的下一跳设备是…

【C++初阶】C++入门(2)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、函数重载1.1 函数重载的概念1.2 函数重载的种类1.3 C支持函数重载的原理 二…