KVM 虚拟化平台

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

目录

一、KVM 虚拟化

1. KVM 概述

2. KVM 原理简介

3. KVM 运行时的三种模式

4. KVM工作流程

5. 组件构成

 二、部署KVM


一、KVM 虚拟化

1. KVM 概述

KVM(Kernel-based Virtual Machine) 是基于 Linux 内核的开源虚拟化技术,通过将 Linux 内核转变为虚拟机监控器(Hypervisor),允许多个隔离的虚拟机(VM)直接访问物理硬件资源。

核心特点

  1. 集成于内核:作为内核模块(kvm.ko)实现,无需额外安装 Hypervisor。

  2. 硬件辅助虚拟化:依赖 CPU 的虚拟化扩展(Intel VT-x / AMD-V)。

  3. 开源生态:与 QEMU 结合提供完整的虚拟化解决方案(设备模拟、I/O 处理等)。

  4. 高性能:接近原生性能,适用于生产环境(如云计算平台 OpenStack)。

2. KVM 原理简介

KVM 的本质是 Linux 内核的一个模块

核心原理如下:

  1. 内核角色转换

    • 加载 KVM 模块后,Linux 内核直接作为 Hypervisor 运行。

  2. 硬件虚拟化支持

    • 通过 CPU 的 VT-x/AMD-V 技术,在硬件层面创建 VMX 模式(虚拟机扩展模式),实现指令截获和特权级隔离。

  3. 用户空间组件

    • QEMU 负责模拟虚拟设备(网卡、磁盘等),并管理虚拟机的生命周期(启动、暂停等)。

  4. 工作流程

    • 用户通过工具(如 libvirt)创建虚拟机 → QEMU 调用 KVM 内核模块 → KVM 利用 CPU 虚拟化扩展创建 vCPU,并调度物理 CPU 资源。

3. KVM 运行时的三种模式

  • 客户模式:是虚拟机在操作系统中的运行模式,分为内核模式和用户模式,主要由 KVM 内核模块模拟 CPU 和内存,实现模式切换及退出处理。
  • 用户模式:运行 QEMU,用于 IO 模拟与虚拟机管理,为用户提供管理工具并执行 I/O 操作。
  • 内核模式:是 KVM 虚拟化核心,运行 KVM 内核模块,负责创建虚拟 CPU 和内存,通过 VMLAUNCH 指令进入客户模式运行 Guest OS,还会处理 Guest OS 运行中的异常及 I/O 需求。
模式执行者权限与职责
内核模式KVM 内核模块处理 vCPU 的敏感指令(如 I/O 操作),通过硬件虚拟化截获并交由 Hypervisor 处理。
用户模式QEMU 进程模拟虚拟硬件设备(磁盘、网卡),处理非特权操作(如虚拟机启动/配置)。
客户模式虚拟机操作系统运行未经修改的 Guest OS,执行普通指令;敏感指令被硬件截获并陷入内核模式。

4. KVM工作流程

  1. 启动虚拟机

    • 用户通过 virt-manager 或 virsh 启动虚拟机 → libvirt 调用 QEMU 进程。

  2. 创建虚拟化环境

    • QEMU 调用 KVM 内核模块,创建虚拟的 CPU(vCPU)、内存等资源。

  3. vCPU 调度

    • 每个 vCPU 对应一个 Linux 线程,由宿主机的调度器(如 CFS)管理。

    • KVM 通过 ioctl(KVM_RUN) 启动 vCPU 运行。

  4. 内存虚拟化

    • 影子页表 或 EPT/NPT(Intel/AMD 硬件辅助)映射 Guest 物理地址到宿主机物理地址。

  5. I/O 虚拟化

    • 模拟模式:QEMU 完全模拟设备(如 IDE 磁盘),性能较低。

    • 半虚拟化(virtio):Guest 安装 virtio 驱动,直接与宿主机通信,减少模拟开销。

    • 设备直通(VFIO):将物理设备(如 GPU)直接分配给虚拟机,近乎原生性能。

  6. 中断处理

    • 物理中断由宿主机处理 → KVM 注入虚拟中断到目标虚拟机。

5. 组件构成

组件层级核心组件关键作用通俗理解
内核层kvm.ko直接管理 CPU 和内存虚拟化虚拟化引擎(指挥硬件资源)
kvm-intel.ko
kvm-amd.ko
调用 Intel/AMD 的 CPU 虚拟化指令硬件翻译官
用户层QEMU模拟磁盘、网卡等虚拟设备设备模拟器(造虚拟硬件)
virtio驱动高性能半虚拟化设备(磁盘/网卡/内存管理)加速芯片(提升 I/O 性能)
管理层libvirt统一管理虚拟机(创建/启动/迁移)管理员控制台
virsh命令行操作虚拟机终端遥控器
virt-manager图形化界面管理虚拟机可视化操作面板

核心组件详解: 

  1. QEMU(硬件模拟器)

    • 干什么:造出虚拟CPU、磁盘、网卡等硬件

    • 关键能力

      • 跨平台运行不同架构系统(如x86主机跑ARM虚拟机)

      • 与KVM协同实现高速虚拟化(不用KVM时性能差10倍+)

  2. /dev/kvm(内核接口)

    • 是什么:Linux内核暴露的字符设备文件

    • 核心作用:用户空间(QEMU)操作KVM内核模块的唯一入口

  3. ioctl(控制命令)

    • 干什么:通过文件描述符(fd)向设备发送指令

    • 关键操作

      • KVM_CREATE_VM(创建虚拟机)

      • KVM_RUN(启动vCPU执行)

  4. fd(操作手柄)

    • 本质:QEMU打开/dev/kvm后获得的文件描述符

    • 作用:所有ioctl命令必须通过fd操作

  5. KVM内核模块(虚拟化引擎)

    • 核心任务

      • 接管CPU的虚拟化功能(Intel VT-x/AMD-V)

      • 直接管理物理内存映射(硬件加速EPT/NPT)

      • 截获虚拟机敏感指令

 二、部署KVM

案例实验环境

主机

.  操作系统

IP地址

主要软件

kvm01

CentOS 7.9 x86_64

192.168.10.101

KVM 虚拟机

kvm02

CentOS 7.9 x86_64

192.168.10.102

搭建 KVM 虚拟化平台

101、102(配置一样)
#基础环境
--改主机名
101:
hostnamectl set-hostname kvm01
102:
hostnamectl set-hostname kvm02 

--生效
bash
--主机映射
 vim /etc/hosts
192.168.10.101 kvm01
192.168.10.102 kvm02
--关闭防火墙和setenforce
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config

--安装
dnf -y install gnome-shell gnome-session gdm gnome-terminal

#设置默认的登录环境
systemctl set-default graphical.target
poweroff(关机配置虚拟机)

#虚拟机配置
处理器——》虚拟化引擎——》虚拟化Inter
(开机后就可以看到界面,可以使用伪终端,若要使用更多功能,可以再安装)

#安装KVM模块的一组包
dnf -y install qemu-kvm qemu-img bridge-utils virt-manager libguestfs-tools virt-install libvirt 

#查看硬件和系统支不支持虚拟化
cat /proc/cpuinfo
lsmod | grep kvm

#启动
systemctl start libvirtd
systemctl enable libvirtd

#添加网络接口(自己设置虚拟网卡,为桥接网卡)
nmcli connection add type bridge con-name br0 ifname br0
语法格式:nmcli connection add type 网卡类型  网卡名字 ifname 网卡
#查看一下
cat /etc/sysconfig/network-scripts/ifcfg-br0

#虚拟与物理网卡绑定生成第三个网卡(为以太网网卡)
nmcli connection add type ethernet con-name br0-slave-ens33 ifname ens33 master br0

(实际网卡是来桥接虚拟与外部的网卡,类似交换机因此不需要地址)

#IP地址迁移到其他(br0)网卡
101:
nmcli connection modify br0 ipv4.method manual ipv4.address 192.168.10.101/24 ipv4.gateway 192.168.10.254 ipv4.dns 8.8.8.8

102:
nmcli connection modify br0 ipv4.method manual ipv4.address 192.168.10.102/24 ipv4.gateway 192.168.10.254 ipv4.dns 8.8.8.8

#查看(未转移到br0)
ifconfig

#关闭ens33网卡(让IP迁移生效)
nmcli con down ens33

#开启br0和br0-slave-ens33 
nmcli con up br0
nmcli con up br0-slave-ens33

#查看验证(成功转移)
ifconfig

桌面环境管理

活动——》点虚拟系统管理器
(可以直接创建虚拟机)
存储池:放在哪个目录下这个目录就是存储池。创建的是目录
镜像存储池:
存储卷:


新建虚拟机
拉取iso镜像,放在/opt 下(用xhell)
步骤:
1.点添加
2.本地安装
3.选择iso镜像文件(opt下的)
4.设置内存和CPU
5.选择硬盘(选择下面的自定义,使用自定义的卷)
6.保持默认,桥接模式
7.安装
8.IP设置要与KVM主机保持在一个子网里(因为是桥接模式。NAT则不用)

管理KVM

#查看所有虚拟机和运行状态
virsh list --all

#关闭虚拟机
virsh shutdown 虚拟机名

#开启虚拟机
virsh start 虚拟机名

#强制关机
virsh destroy 虚拟机名

#利用运行配置文件去加载,开启虚拟机
virsh create /etc/libvirt/qemu/虚拟机名

#挂起虚拟机
virsh suspend 虚拟机名

#恢复虚拟机
virsh resume 虚拟机名

#配置虚拟机实例伴随宿主机自动启动 
virsh autostart 虚拟机

#导出虚拟机配置文件(备份)
virsh dumpxml 虚拟机名 > /etc/libvirt/qemu/虚拟机m.xml

#虚拟机的删除与添加 
virsh shutdown 虚拟机名   //先关闭
virsh undefine 虚拟机名   //再删除

#重定义(恢复)
virsh define 备份名

#通过备份的配置文件重新定义虚拟机
cd /etc/libvirt/qemu 
mv 备份文件.xml 原名.xml

virsh list --all  #查看虚拟机信息
virsh start 虚拟机名  #启动

#修改虚拟机配置信息
(用来修改系统内存大小、磁盘文件等信息) 

直接通过 vim 命令修改。 
[root@kvm01 ~]# vim /etc/libvirt/qemu/test01.xml 

通过 virsh 命令修改。 
[root@kvm01 ~]# virsh edit test01

文件管理

文件管理,通过磁盘文件查看信息
关闭虚拟机
1.virt-cat 命令,类似cat
格式要求是qcow2
(需要安装 libguestfs-tools-c、 guestfs-tools工具包)
virt-cat -a /data_kvm/store/test01.qcow2 /etc/hosts

2.virt-edit 命令 
用于编辑文件,用法与 vim 基本一致。 
virt-edit -a /data_kvm/store/test01.qcow2 /etc/resolv.conf
3.virt-df 命令 
用于查看虚拟机磁盘信息。 
virt-df -h test01


#虚拟机克隆(记得关闭虚拟机)

(1)查看虚拟机状态 
[root@kvm01 ~]# virsh list --all

(2)从 test01 克隆 test02 
[root@kvm01 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2 

(3)查看虚拟机状态 
[root@kvm01 ~]# virsh list --all 

(4)启动虚拟机 
[root@kvm01 ~]# virsh start test02

#虚拟机快照(磁盘格式必须为 qcow2)
如:
(1)对 test01 创建快照 
[root@kvm01 ~]# virsh snapshot-create test01 
已生成域快照 1503494464 
(2)查看虚拟机快照版本信息 
[root@kvm01 ~]# virsh snapshot-current test01

(3)查看快照信息 
[root@kvm01 ~]# virsh snapshot-list test01

(4)创建新快照 
[root@kvm01 ~]# virsh snapshot-create test01 

(5)查看快照信息 
[root@kvm01 ~]# virsh snapshot-list test01

(6)恢复虚拟机状态
[root@kvm01 ~]# virsh snapshot-revert test01 1503494464

(7)查看虚拟机快照版本信息 
[root@kvm01 ~]# virsh snapshot-current test01

(8)删除快照 
[root@kvm01 ~]# virsh snapshot-delete test01 1503494464

【超详细~KVMKVM概述、安装及简单操作-------从小白到大神之路之学习运维第91天 围绕KVM虚拟化技术展开,主要内容包括:KVM的基本概念、工作原理及其在云计算、Web托管等场景的应用;CentOS7环境下KVM的安装部署流程;通过virt-manager工具创建虚拟机(包括存储池配置、镜像上传等步骤)的详细操作;以及虚拟机管理(启动/关闭、克隆/快照等)的常用命令。培训通过理论讲解结合实践演示,帮助学员掌握KVM虚拟化技术的核心知识和基本运维技能。 阅读详情

相关推荐

kvm虚拟化

文章目录1. 虚拟化介绍2. kvm介绍3. kvm部署3.1 kvm安装3.2 kvm web管理界面安装3.3 kvm web界面管理 1. 虚拟化介绍 虚拟化云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。 物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest...

cwt0314的博客 1129

KVM详解,太详细太深入了,经典

KVM 介绍(1):简介及安装 http://www.cnblogs.com/sammyliu/p/4543110.html 学习 KVM 的系列文章:  (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 l...

sunr_的博客 7万+

部署KVM虚拟化平台

KVM(Kernel-based Virtual Machine)是一种基于Linux内核的采用硬件辅助虚拟化技术的全虚拟化解决方案。以下是对KVM原理的详细简介:KVM的工作原理涉及虚拟化技术、硬件支持以及内核模块等多个方面:虽然KVM提供了核心虚拟化功能,但它本身并不直接与用户交互。KVM需要借助用户空间的程序(如QEMU)来实现与用户的交互。QEMU是一个模拟处理器,在GNU/Linux平台上使用广泛。它本身是一个纯软件的支持CPU虚拟化、内存虚拟化及I/O虚拟化等功能的用户空间程序。QEMU借助KV

weixin_73188318的博客 3408

kvm介绍

KVM(Kernel-Based Virtual Machines)是一个基于Linux内核的虚拟化技术, 可以直接将Linux内核转换为Hypervisor(系统管理程 序)从而使得Linux内核能够直接管理虚拟机, 直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机 KVM在2007年2月被收录进Linux 2.6.20版本的内核 虚拟化分为两种类型:     1:Hype...

weixin_30737433的博客 1285

部署 KVM 虚拟化平台

公司部分 Linux 服务器硬件资源利用率不高,为了充分利用这些 Linux 服务器,可以部署 KVM,在物理机上运行多个业务系统。例如,在运行 Nginx 的服务器上部署 KVM,然后在 KVM 虚拟机上运行 Tomcat 等服务。广义的 KVM 实际上包含两部分,一部分是基于 Linux 内核支持的 KVM 内核模块,另一部分就是经过简化和修改的 Qemu。KVM 内核模块是模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提供一个用户空间工具来进行虚拟机的管理。

2301_77081516的博客 3509

虚拟化平台kvm架构 部署kvm虚拟化平台

广义的KVM实际上包含两个部分,一部分是基于Linux内核支持的KVM内核模块,另一部分是经过简化和修改的Qemu。KVM内核模块模拟处理器和内存以支持虚拟机的运行,Qemu主要处理I/O以及为用户提供一个用户空间来进行虚拟机的管理。两者相互结合,相辅相成,构成了一个完整的虚拟化平台。本章详细介绍kvm部署与管理。

Linux运维老纪的博客 2377

KVM虚拟化平台搭建

centos7系统开局优化和KVM环境准备 光盘自动挂载 [root@localhost ~]# vim /etc/fstab #尾行添加 /dev/sr0 /mnt iso9660 defaults 0 0 优化ssh [root@localhost ~]# vim /etc/ssh/sshd_config UseDNS no #取消注释,并将yes改成no yum本地仓库搭建 [root@localhost ~]# cd /etc/yum.repos.d/ [roo

kang_01的博客 3946

KVM 虚拟化平台部署

文章目录KVMKVM 概述KVM运行时的三种模式KVM工作原理KVM虚拟化平台实操拓扑图一:虚拟机资源二:虚拟机开启虚拟化三:环境优化四:安装KVM五:设置 KVM 网络六:KVM部署与管理 KVM KVM 概述 广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部分就是经过简化和修改的 Qemu。 KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提 供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相

m0_50854537的博客 4856

案例-部署KVM虚拟化平台虚拟化技术实战)

KVM 是 Kernel-based Virtual Machine 的缩写,是一种用于虚拟化的开源硬件虚拟化技术。它使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。KVM 允许虚拟机直接访问物理硬件资源,从而提供出色的性能和稳定性,同时还支持许多常见的操作系统和应用程序。KVM 使用了 QEMU (Quick Emulator) 作为其默认的虚拟机监控程序。除此之外,KVM 还支持多种嵌入式和云计算场景,并且得到了广泛的应用。

2401_85084312的博客 4183

虚拟化平台——KVM

目录1.理论部分1.1 虚拟化概述1.1.1 虚拟化类型1.2 KVM 概述1.2.1 KVM的模式1.2.2 KVM工作原理1.2.3 KVM 的补充2. 搭建KVM2.1 搭建环境2.2 搭建步骤2.3 图形化界面步骤2.3.1 第一步:创建存储池2.3.2 创建存储卷2.3.3 创建虚拟机2.3.4 验证安装成功3. 小结 1.理论部分 1.1 虚拟化概述 在一个操作系统中(win10) 模拟多个操作系统(centos、win10、suse),同时每个操作系统可以跑不同的服务(nginx+tomca

与之二三事、 4481
上一篇: GFS 分布式文件系统
下一篇: KVM 高级功能部署
伤不起bb
博客等级 码龄3年 660粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值