KVM-安装-使用-迁移

在这里插入图片描述

一. 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 1Serial Number: USE933N3P3# 是否有KVM模块
lsmod | grep kvmkvm_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.1lazy 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-ethTYPE="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.234NETMASK=255.255.255.0GATEWAY=172.16.206.1DNS1=1.2.4.8DNS2=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.mzph.cn/news/662931.shtml

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

相关文章

批量修改文件后缀名

需要将/opt/module/test/路径下的txt文件后缀修改为cpp&#xff0c;并且以年份结尾 代码如下&#xff1a; #!/bin/bashyear2020 directory"/opt/module/test/"cd "$directory" || exit 1for name in *.txt; donew_name"${name%.txt}_${year}.cpp&qu…

SpringBoot security 安全认证(一)——登录验证

本节内容&#xff1a;使用springboot自动security模块实现用户登录验证功能&#xff1b; 登录过程如下图&#xff1a; AuthenticationManager内容实现用户账号密码验证&#xff0c;还可以对用户状态&#xff08;启用/禁用&#xff09;&#xff0c;逻辑删除&#xff0c;账号是否…

LeetCode.189. 轮转数组

题目 题目链接 分析 首先能想到的就是可以用一个新数组&#xff0c;先保存原数组的后 k 个元素&#xff0c;再保存原数组的前 n−k 个元素。但题目要求不使用额外的数组空间&#xff0c;那么就需要在原数组上做操作。 我们可以先把整个数组翻转一下&#xff0c;这样后半段元…

虚幻UE5Matehuman定制自己的虚拟人,从相机拍照到UE5制作全流程

开启自己的元宇宙,照片扫描真实的人类,生成虚拟形象,保姆级教程,欢迎大家指正。 需要的软件: 制作流程: 一.拍照。 围绕自己拍照,大概20多张图就差不多了,把脑门漏出来,无需拍后脑勺。 拍照方式 例如,拍照时尽量不要在脸上体现出明显的光源方向。

07. 【Linux教程】远程登录

Linux 远程登录 前面介绍了如何安装 Linux 终端工具&#xff0c;本小节介绍本地电脑如何使用 ssh 命令远程登录、Linux 终端工具远程登录的方式&#xff0c;这两种登录方式都是基于 ssh 网络安全协议的&#xff0c;学会使用远程登录 Linux 服务器&#xff0c;会让你对 Linux 系…

Postman(接口测试工具),什么是Postman接口

目录 一.基本介绍 Postman 是什么Postman 快速入门快速入门需求说明 二.Postman 完成 Controller 层测试 需要的代码&#xff1a; Java类request.jspsuccess.jsp1. 完成请求2. 完成请求3. 完成请求4. 完成请求5. 完成请求 三.发送join 目录 一.基本介绍 Postman 是什么 …

使用 Dockerfile 定制镜像详解

使用 Dockerfile 定制镜像详解 1.DockerfileFROM 指定基础镜像RUN 执行命令构建镜像 2.COPY 复制文件3.ADD 更高级的复制文件4.CMD 容器启动命令5.ENTRYPOINT 入口点6.ENV 设置环境变量7.ARG 构建参数8.VOLUME 定义匿名卷9.EXPOSE 暴露端口10.WORKDIR 指定工作目录11.USER 指定…

通过Netbackup恢复Oracle备份实操手册

1、系统环境描述 1 2、恢复前数据备份 2 2.1 在NBU上执行一次完整的备份 2 2.2 查看ORACLE的备份集 3 2.2.1在备份客户端上查看备份集 3 2.2.2在备份服务器netbackup上查看客户端备份集 4 3、本机恢复方法 5 3.1丢失SPFILE文件恢复方法 5 3.2丢失CONTROLFILE文件恢复方…

51单片机编程应用(C语言):模块化编程

下面我们模块化几个函数&#xff1a; Delay.c //延时子函数 void Delay(unsigned int xms) {unsigned char i, j;while(xms--){i 2;j 239;do{while (--j);} while (--i);} } Delay.h #ifndef __DELAY_H__ #define __DELAY_H__void Delay(unsigned int xms);#endifNixie.h …

js 设置、获取、删除标签属性以及H5自定义属性

1. 设置标签属性 使用setAttribute()(‘属性名’, ‘属性值’)方法可以添加、修改、删除属性。   下面的demo是为input添加、修改、删除value属性&#xff1a; 1.1. HTML <input type"text" class"input"> <input type"text" class…

有没有合适写毕业论文的AI工具?

最近挺多同学在忙着写毕业论文&#xff0c;不断在“提交-打回-修改-提交”过程里循环着&#xff0c;好不容易写完了&#xff0c;还得考虑论文查重的问题&#xff01;基哥作为一名曾经的毕业生&#xff0c;当然也体验过这种痛苦了。 但是&#xff0c;大人&#xff0c;时代变了&…

无法在 word 中登录 Grammarly

目录 1. 情况描述 2. 解决方法 3. 原因分析 1. 情况描述 在浏览器中可以登录 Grammarly&#xff0c;但是在 word 中登录失败&#xff0c;大致如下图所示&#xff1a; 我自己没有截图&#xff0c;这是网上别人的图&#xff0c;但差不多都长这个样子。 2. 解决方法 我点击了…

推荐一个好用的人脑解剖结构及功能注释3D图谱——3D Brain

大脑是一个非凡的结构&#xff0c;它定义了我们是谁&#xff0c;以及我们如何体验世界。神经成像技术的最新进展使我们能够看到大脑内部&#xff0c;让我们能够看到构成大脑的组成部分并了解它们对应的功能。大脑的大体结构对大多数人来说都很熟悉。 前脑的外层构成了我们熟悉…

shell - 正则表达式和grep命令和sed命令

一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符&#xff1a; 大小写字母、数字、标点符号及一些其它符号元字符&#xff1a; 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…

MySQL 备份恢复

1.1 MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了。 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数…

机器学习2-简单的二分类问题

需求&#xff1a; 假设现在需要对数据进行二分类&#xff0c;小于0.5的&#xff0c;打上0的标记&#xff0c;大于0.5的&#xff0c;打上1的标记&#xff0c;怎么做&#xff1f; 分析&#xff1a; 这是一个简单的二分类问题&#xff0c;使用逻辑回归模型。 代码&#xff1a; …

【PostgresSQL系列】 ltree简介及基于SpringBoot实现 ltree数据增删改查

本文将对PostgresSQL中的ltree进行相关概念介绍&#xff0c;并以示例代码讲解ltree数据增删改查功能的实现。 作者&#xff1a;后端小肥肠 目录 1.前言 2. 基础概念 2.1. ltree 2.2. lquery 2.3. ltxtquery 2.4. ltree函数及操作符 2.4.1. ltree函数 2.4.2. ltree操作符…

Python实现TCP和UDP通信

目录 一&#xff1a;TCP 二&#xff1a;UDP 一&#xff1a;TCP 在Python中实现TCP通信可以通过使用内置的socket模块来完成。以下是一个简单的示例&#xff0c;展示了如何使用Python的socket模块创建一个TCP客户端和服务器。 TCP服务器 import socket def start_server(): s…

Linux之系统安全与应用续章

目录 一. PAM认证 1.2 初识PAM 1.2.1 PAM及其作用 1.2.2 PAM认证原理 1.2.3 PAM认证的构成 1.2.4 PAM 认证类型 1.2.5 PAM 控制类型 二. limit 三. GRUB加密 /etc/grub.d目录 四. 暴力破解密码 五. 网络扫描--NMAP 六. 总结 一. PAM认证 1.2 初识PAM PAM是Linux系…

【深蓝学院】移动机器人运动规划--第3章 基于采样的路径规划--作业

0. Assignment T1. MATLAB实现RRT 1.1 GPT-4任务分析 RRT伪代码&#xff1a; 任务1即使用matlab实现RRT&#xff0c;结合作业所给框架&#xff0c;简单梳理&#xff0c;可结合1.2代码理解&#xff1a; 设置start&#xff0c;goal&#xff0c;near to goal threshold Thr&am…