【KVM】虚拟化技术及实战

news2024/10/3 23:41:38

一,KVM简介

KVM全称为QEMU-KVM
KVM可以模拟内存,cpu的虚拟化,不能模拟其他设备虚拟化。
QEMU可以模拟I/O设备(网卡,磁盘等)
两者结合,实现真正意义上的虚拟化。

从rhel6版本开始,企业中默认内核xen不支持,由KVM作为内核模块实现的。

1,分类

平台虚拟化(计算机或操作系统),
资源虚拟化(内存,CPU等),
应用程序虚拟化(仿真,模拟,解析等)。

  • 操作系统虚拟化:Openvz 虚拟化出的vps,只可安装linux,不能安装windows系统。
  • 部分虚拟化:只是模拟底层硬件。
  • 全虚拟化:完整模拟

KVM和VMware都支持全虚拟化。

  • 超虚拟化
  • 硬件辅助虚拟化(借助外接硬件)

2,架构

QEMU为硬件模拟器,开源虚拟软件。
常用工具:hypervisor

来宾操作系统(GuestOS):
① 可加载的KVM模块
② 用于PC平台模拟(QEMU)

二,KVM安装

1,环境准备

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
vi /etc/sysconfig/selinux
SELINUX=disabled 
setenforce 0 

查看CPU是否支持VT技术:

cat /proc/cupinfo | grep -E 'vmx|svm'

2,安装

  • 主要的三个包:
    ①qemu-kvm (主包) ② libvirt(API接口) ③virt-manager(图形管理程序)

  • 各个版本安装

【centos6】:

yum groupinstall  "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y

【centos7】:

# 查看内核版本,一般3.10以上都行
uname -r

# 安装
yum install *qemu* *virt* librbd1-devel -y

安装报错的情况,需要升级系统版本 yum upgrade

【centos8】:
yum 组安装已经可以使用了,
问题:在进行组安装的时候会出现关于rpm版本的错误问题解决:

yum upgrade rpm -y

再单独安装virt-manager工具。

  • 启动服务:
systemctl start libvirtd
  • 查看模块加载
lsmod | grep KVM

3,删除

清理环境 ,卸载KVM:

yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
rm -rf /var/lib/libvirt /etc/libvirt/

三,GuestOS安装

1,图形界面安装

打开安装界面:Virt-manager
在这里插入图片描述

图形安装需要先准备镜像文件:Cent0s-7-x86_64-DVD-1708.iso
接下来步骤一步步安装(类似VMmare)(略)

2, 完全文本方式安装

服务器和客户端 都没有图形的情况下,采用此种安装方式。
注意:此种安装方式,输入字母大小写不可控,不影响远程操作,而且内存要求2G以上才行。

#virt-install --connect qemu:///system -n vm6 -r 512 --diskpath=/virhost/vmware/vm6.img,size=7 --os-type=linux --os-variant=rhel6 --vcpus=1 --network bridge=br0 --1ocation=http://127.0.0.1/rhel6u4 -x console=ttyS0 --nographics

#virt-install --connect qemu:///system -n vm9 -r 2048 --diskpath=/var/lib/libvirt/images/vm9.img,size=7 --os-type=linux --os-variant=centos7.0 --vcpus=1 --location=ftp://192.168.100.230/centos7u3 -x console=ttys0 --nographics

安装完后,查看KVM支持的os版本:

man virt-install
osinfo-query os | grep centos

3,命令行安装(重点)

(1)虚拟机的组成部分

1.虚拟机配置文件

ls /etc/libvirt/qemu
networks  vm1.xml

2.储存虚拟机的介质

ls /var/lib/libvirt/images
vm1.img

后缀自定义,一般命名.img 或者.qemu2

(2)根据配置文件创建虚拟机

# 将配置文件拷贝
cd /etc/libvirt/qemu/
cp vm1.xml vm2.xml

# 将镜像文件复制(时间长)
cd /var/lib/libvirt/images/
cp m1.qcow2  vm2.img

(3)更改配置文件
在这里插入图片描述
在这里插入图片描述
【注意】:MAC地址更改,仅仅更改后面三段(后六位)

(4)创建虚拟机

virsh  define  /etc/libvirt/qemu/vm2.xml

(5)重启虚拟机

systemctl restart libvirtd

(6)宿主机开启路由转发:

# 配置文件加入ipv4
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

# 是否配置生效
sysctl -p

4,通过飞机驾驶舱安装和管理虚拟机

yum install -y cockpit
systemctl start  cockpit

浏览器访问:主机ip+9090
在这里插入图片描述
用户名和密码与服务器用户名密码相同

在这里插入图片描述

停止飞机驾驶舱:

systemctl start  cockpit.socket

查看端口9090 是否消失确认关闭:

netstat -lntp

5,安装过程问题解决

安装过程,卡住不动的情况下解决方案:
① yum upgrade -y
② 安装兼容程序
③ 可能qemu-kvm主包,错误的安装成了qemu-kvm-ev

四,KVM添加磁盘

对虚拟机器,升级配置

1.修改配置文件

(比如添加磁盘,那就添加如下配置)
在这里插入图片描述

2.创建新的空磁盘卷:

qemu-img create -f qcow2 /var/lib/libvirt/images/vm3-1.qcow2 10G

-f: 指定磁盘格式

3. 重新定义:

virsh define /etc/libvirtd/qemu/ym3.xml

五,KVM存储池

默认存储池:/var/lib/libvirt/images/

1、存储池管理

1.创建基于文件夹的存储池(目录)
mkdir -p /data/vmfs

2.定义存储池与其目录
virsh pool-define-as vmdisk --type dir --target /data/vmfs

3.创建已定义的存储池
(1)创建已定义的存储池: 
virsh pool-build vmdisk
(2)查看已定义的存储池,存储池不激活无法使用: 
virsh pool-list --a11

4.激活并自动启动已定义的存储池
virsh poo-start mdisk
virsh pool-autostart vmdisk
这里vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘文件了。

5.在存储池中创建虚拟机存储卷
virsh vol-create-as vmdisk oeltest03.qcow2 20G  --format qcow2
注1:KVM存储池主要是体现一种管理方式,通过挂载存储目录,lvm逻辑卷的方式创建存储池,虚拟机存储卷创建完成后,剩下的操作与无存储卷的方式无任何区别了。
注2:KVM存储池也要用于虚拟机迁移任务。

6.存储池相关管理命令
(1)在存储池中删除虚拟机存储卷
virsh vol-delete --pool vmdisk oeltest03.gcow2
(2)取消激活存储池
virsh pool-destroy vmdisk
(3)删除存储池定义的目录/data/vmfs
virsh pool-delete vmdisk
(4)取消定义存储池
virsh pool-undefine vmdisk

2、生成环境存储池使用

添加Ivm和远程存储即可

3、磁盘格式

磁盘格式名性能是否支持快照是否立刻分配空间
raw最快不支持立刻分配(空间资源浪费)
qcow一般--
qcow2较快支持不立刻分配(写时拷贝)
qed基本弃用--

什么叫写时拷贝?
raw立刻分配空间,不管你有没有用到那么多空间
qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费。

4、创建磁盘文件

建立qcow2格式磁盘文件:
qemu-img create -f qcow2 test.qcow2 20G

建立raw格式磁盘文件:
qemu-img create -f raw test.raw 20G

查看已经创建的虚拟磁盘文件:
qemu-img info test.qcow2

六,KVM磁盘挂载

1,介绍

当遇到虚拟机无法启动,实施排错时,你需要对虚拟机的内部进行检查。
利用Libguestfs找出损坏的虚拟机文件。

使用Libguestfs,首先需要使用Libvirt。Libvirt是一个管理接口,可以和KVM、Xen和其他一些基于Liunx的虚拟机相互连接。Libguestfs的功能更加强大,可以打开Windows虚拟机上的文件。但是首先你需要将虚拟机迁移到libguestfs可用的环境当中,也就是Linux环境。

2,操作

查看磁盘镜像分区信息:
virt-df -h -d vm1
或
virt-filesystems -d vm1/dev/sda1

挂载磁盘镜像分区:
guestmount -d vml -m /dev/vda1 --rw /mnt

取消挂载:
guestunmount /mnt

七,KVM虚拟机管理

1,基本管理

查看 启动 关闭 重启 重置 查看

# 查看虚拟机:
virsh list
或
virsh list --a1l

# 查看KVM虚拟机配置文件(X):
virsh dumpxml name

# 将node4虚拟机的配置文件保存至node6.xm1(x):
virsh dumpxml node4 > /etc/libvirt/gemu/node6.xml

# 修改node6的配置文件(X):
virsh edit node6

# 如果直接用vim编辑器修改配置文件的话,需要重启1ibvirtd服务
启动:
virsh start vm_name
暂停虚拟机:
virsh suspend vm_name
恢复虚拟机:
virsh resume vm_name
关闭:
方法1:
virsh shutdown vm_name
方法2(X):
virsh destroy vm_name
重启:
virsh rebopt vm_name
重置:
virsh reset vm_name
删除虚拟机:
virsh undefine vm_name
注意:虚拟机在开启的情况下undefine是无法删除的,但是如果再destroy会直接
被删除掉

虚拟机开机自动启动:
virsh autostart vm_name

域vm_name标记为自动开始
1s /etc/libvirt/gemu/autostart/

域vm_name取消标记为自动开始
virsh autostart --disable  vm_name

查看所有开机自启的guest os:
1s /etc/libvirt/gemu/autostart/
virsh ist --a11 --autostart

八,KVM克隆

1,图形界面

Applications(左上角)---->System Tools ------>Virtual Machine Manager关闭要克隆的虚拟机,右键点击虚拟机选择Clone

2,终端命令克隆

virt-clone -o vm_name1 --auto-clone
virt-clone -o vm_name1 -n vm_name2 --auto-clone
virt-clone -o vm_name1 -n vm_name2 -f 'var/lib/libvirt/images/vm2.img

参数说明:
-o : 指定需要克隆的虚拟机名称
-n : 指定克隆出的虚拟机名称
-f ,–file :为新客户机使用新的磁盘镜像文件名称

九,KVM增量镜像

1,基础准备

基本镜像文件:node.img 虚拟机ID:node
增量镜像文件:node4.img 虚拟机ID:node4

2,创建增量镜像

# 创建增量镜像
qemu-img create -b node.img  -f qcow2 node4.img

# 查看是否创建成功
qemu-img info node4.img

参数说明:
-b:指定基础镜像
-f:指定镜像格式

3,创建虚拟机node4的XML配置文件

省略(上面已经介绍)

4,根据xml配置定义虚拟机node4

virsh define /etc/libvirt/qemu/node4.xml
virsh start node4

5,测试

查看生成镜像文件的大小,使用命令:du -h 文件名

6,快照

为虚拟机vm_name01创建一个快照vm_name01-1.snap

# 创建快照
virsh  snapshot-create-as  vm_name01  vm_name01-1.snap

# 查看指定快照文件格式
qemu-img info /var/lib/libvirt/images/vm2.qcow2

# 查看快照列表
virsh snapshot-list vm_name01

# 创建一块磁盘
qemu-img create -f raw /var/lib/libvirt/images/vm2-1.raw 2G

由于新磁盘格式为raw,可以挂载但是无法创建快照,因此,需要将raw格式转换成qcow2格式,具体操作如下:

# 将raw格式转换成qcow2格式 
qemu-img convert -O qcow2 [需要转换文件名].raw   [转换成的文件名].qcow2

# 查看信息
qemu-img info [转换成的文件名].qcow2

转换格式成功后,需要重新该配置文件vm2.xml后,定义并创建快照:

virsh define /etc/libvirt/qemu/vm2.xml

# 拍快照
Virsh snapshot-create-as vm2  vm2.snap2

# 恢复快照
virsh snapshot-revert  vm2 vm2.snap2

十,KVM网络

1,分类:

(1)网络分类:nat 和 isolated
(2)接口:bridge
(3)虚拟交换机: linux-bridge(linux自带) 和 ovs (open-Vswitch)

2,网络拓扑

(1)NAT网络拓扑
(2)隔离网络拓扑
(3)桥接网络拓扑

3,实验操作

# 查看交换机 包括其端口
brctl show

在这里插入图片描述

# 从交换机上把vnet0网卡删除:
brctl delif virbr0 vnet0

# 添加vnet网卡到交换机上:
brctl addif  virbr0 vnet0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看所有的网络:
virsh net-list

启动网络:
virsh net-start isolated200

开机自启动:
virsh net-autostart isolated200

查看一个guest主机的网络接口信息:
virsh domiflist vm2

【KVM相关项目】

1、迁移
  • 从物理机器迁移到KVM
  • 从KVM迁移到云主机
2、文件管理服务(ftp nfs jira+wiki)
3、日志服务

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

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

相关文章

Elasticsearch——数据聚合、数据同步与集群搭建

目录 1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket 聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric 聚合语法1.2.5.小结 1.3.RestAPI 实现聚合1.3.1.API 语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.…

YOLOv8 结合设计硬件感知神经网络设计的高效 Repvgg的ConvNet 网络结构 ,改进EfficientRep结构

一、理论部分 摘要—我们提出了一种硬件高效的卷积神经网络架构,它具有类似 repvgg 的架构。Flops 或参数是评估网络效率的传统指标,这些网络对硬件(包括计算能力和内存带宽)不敏感。因此,如何设计神经网络以有效利用硬件的计算能力和内存带宽是一个关键问题。本文提出了一…

Chromium 使用安全 DNS功能源码分析c++

一、选项页安全dns选项如下图: 二、那么如何自定义安全dns功能呢? 1、先看前端部分代码调用 shared.rollup.jsclass PrivacyPageBrowserProxyImpl {.................................................................getSecureDnsResolverList() {re…

25货拉拉校园招聘面试经验 面试最常见问题总结

货拉拉校园招聘面试经验 目录 【面试经历】 问题+详细答案 面试全流程 【面试经历】 发面经,攒人品。 项目问题: 1.AOP日志落库到数据库,为什么不用一些现成的方案? 2.邀请链接的id怎么用redis生成的? 3.乐观锁保证了奖励的正确发放,请你说说乐观锁的原理。 4.奖…

TCN模型实现电力数据预测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色&a…

AI少女/HS2甜心选择2 仿天刀人物卡全合集打包

内含AI少女/甜心选择2 仿天刀角色卡全合集打包共21张 下载地址:https://www.51888w.com/408.html 部分演示图:

python全栈学习记录(二十一)类的继承、派生、组合

类的继承、派生、组合 文章目录 类的继承、派生、组合一、类的继承二、派生三、组合 一、类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。 继承的特性是:子类会遗传父类的属性(继承是类与类之间的关系&a…

基于STM32的数字温度传感器设计与实现

引言 STM32 是由意法半导体(STMicroelectronics)开发的基于 ARM Cortex-M 内核的微控制器系列,以其强大的处理能力、丰富的外设接口和低功耗著称,广泛应用于嵌入式系统设计中。在这篇文章中,我们将介绍如何基于 STM32…

C++《string》

在之前的C语言学习当中我们已经了解了一系列的字符以及字符串函数,虽然这些函数也能实现对字符串进行求长度、拷贝、追加等操作,但是C语言当中的这些函数是与字符串分离的,并且最主要的是在使用这些函数时原字符串的底层空间是需要我们自己来…

微知-Intel芯片中的QPI是什么?本质是什么?以及其他几个高速总线的速率问题(快速通道互联,CPU之间互联总线)

基础信息 CPU与CPU之间通过QPI总线进行通信,类似CPU与PCI-E设备通过PCIE总线进行通信。 The Intel QuickPath Interconnect (QPI):快速通道互联,快路径内部互联总线。是Inter-connect,内部互联的。是英特尔开发的一种高速点对点…

SpringBoot精华:打造高效美容院管理系统

第一章 绪论 1.1 选题背景 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信…

BiLSTM模型实现电力数据预测

基础模型见:A020-LSTM模型实现电力数据预测 1. 引言 时间序列预测在电力系统管理、负荷预测和能源优化等领域具有重要意义。传统的单向长短期记忆网络(LSTM)因其在处理时间序列数据中的优势,广泛应用于此类任务。然而&#xff0…

用友NC service接口信息泄露漏洞

漏洞描述 用友NC service接口信息泄露漏洞,攻击者可通过构造恶意链接获取所有接口链接 公网上大部分服务器都没有修复此漏洞,可刷SRC 用友nc有个接口可以获取数据库账户密码,不过是老版本了 漏洞复现 app"用友-UFIDA-NC" POC …

哪家宠物空气净化器可以高效去除浮毛?希喂、IAM、有哈怎么样

在现代养宠家庭中,随着生活节奏的加快,清理浮毛也是很多家庭周末必须要做的事情。但是如何选择一款吸毛好、还不增加清理负担的宠物空气净化器,在寸土寸金的租房里为全家老小的健康生活保障?又如何通过强大的吸毛、除臭技术和除菌…

【学习笔记】手写一个简单的 Spring IOC

目录 一、什么是 Spring IOC? 二、IOC 的作用 1. IOC 怎么知道要创建哪些对象呢? 2. 创建出来的对象放在哪儿? 3. 创建出来的对象如果有属性,如何给属性赋值? 三、实现步骤 1. 创建自定义注解 2. 创建 IOC 容器…

IO模型介绍

一、理解IO 网络通信的本质就是进程间通信,进程间通信本质就是IO TCP中的IO接口:read / write / send / recv,本质都是:等 拷贝 所以IO的本质就是:等 拷贝 那么如何高效的IO? 减少“等”在单位时间的…

在VS code 中部署C#和avalonia开发环境

要在 Mac 的 VS Code 中配置 C# 和 Avalonia 的开发环境,您可以按照以下步骤进行: 1. 安装 .NET SDK 下载 .NET SDK: 访问 .NET 下载页面。选择适用于 macOS 的最新稳定版本的 .NET SDK,并下载安装程序。安装 .NET SDK&#xff1…

PADS自动导出Gerber文件 —— 6层板

在出GERBER文件之前要给PCB文件铺完铜并且检查连接性和安全间距无错误。进入CAM中之后点自动定义。如果电气层不需要用到2D线,保险起见在电气层中把2D线和文本去掉(在DRC检查时2D线不会报错,文本是会报错的),因为有些时…

【JAVA开源】基于Vue和SpringBoot的校园资料分享平台

本文项目编号 T 059 ,文末自助获取源码 \color{red}{T059,文末自助获取源码} T059,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

(功能测试)熟悉web项目及环境 测试流程

1.环境?有没有考虑过什么是环境? web网站为什么能打开? (是因为他的服务器已经在运行了,网站服务器相关环境已部署及运行) 所以什么是环境? 环境:就是项目运行所需要的软件及硬件组合…