虚拟化是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。

一、KVM概述
1.概述
KVM是基于虚拟化扩展的 X86 硬件的开源Linux原生的全虚拟化方KVM (Kernel-based Vritual Machine)-案(要求 cpu支持intel-VTx或 AMD-V)需要经过修改的QEMU软件(qemu-kvm)来实现虛拟机的管理 KVM就是内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,虚拟机中的VCPU就是该进程中的线程。
2.基本架构

3.QEMU KVM QEMU-KVM libvirt
1) KVM (Kernel-based Virtual Machine)
- 本质 :Linux 内核的一个模块(
kvm.ko),从 Linux 2.6.20 版本开始被正式纳入主线内核 - 核心功能:利用 CPU 的硬件虚拟化扩展(Intel VT-x/AMD-V)提供 CPU 和内存的虚拟化加速
- 特点 :
- 本身不执行任何硬件模拟,只负责虚拟化核心功能
- 每个虚拟机 vCPU 对应一个普通的 Linux 进程,由 Linux 调度器统一调度
- 性能接近物理机(通常在 95% 以上)
- 只能在 Linux 系统上运行,且需要 CPU 支持硬件虚拟化
2)QEMU (Quick Emulator)
- 本质:纯用户态的通用模拟器和虚拟化工具
- 核心功能 :
- 全系统模拟:可以模拟不同架构的 CPU(如在 x86 上模拟 ARM、PowerPC 等)
- 硬件设备模拟:模拟网卡、磁盘、显卡、USB 等各种 I/O 设备
- 纯软件虚拟化:不依赖硬件虚拟化支持,在任何系统上都能运行
- 特点 :
- 纯软件模拟时性能较差
- 支持多种操作系统作为客户机
- 支持多种磁盘镜像格式(qcow2、raw、vmdk 等)
3)QEMU-KVM
- 本质:QEMU 与 KVM 的结合体,是目前最常用的硬件加速虚拟化方案
- 核心功能:QEMU 利用 KVM 内核模块提供的硬件加速能力,将 CPU 和内存的虚拟化交给 KVM 处理,自己则专注于 I/O 设备的模拟
- 历史演变 :
- 早期是 QEMU 的一个分支,专门针对 KVM 进行优化
- 从 QEMU 1.3 版本开始,KVM 支持被完全合并到上游 QEMU 中libvirt
- 现在
qemu-system-x86_64命令默认就支持 KVM 加速(通过-enable-kvm参数启用)
4)libvirt
- 本质:开源的虚拟化管理库和工具集,是 Linux 虚拟化的事实标准管理接口
- 核心功能 :
- 提供统一的 API、守护进程(libvirtd)和命令行工具(virsh)
- 管理虚拟机的生命周期(创建、启动、停止、暂停、迁移、销毁等)
- 管理虚拟网络、存储池、快照等资源
- 支持远程管理和多租户
- 特点 :
- 抽象了底层不同虚拟化技术的差异
- 支持多种后端:KVM/QEMU、Xen、LXC、VirtualBox、VMware 等
- 是 virt-manager、OpenStack、Proxmox 等上层工具和云平台的基础

QEMU、KVM、libvirt三者关系总结
QEMU是一个独立的虚拟化解决方案,并不依赖KVM(它本身自己可以做CPU和内存的模拟,只不过效率较低),而KVM是另一套虚拟化解决方案,对CPU进行虚拟效率较高(采用了硬件辅助虚拟化),但本身不提供其他设备的虚拟化,借用了QEMU的代码进行了定制,所以KVM方案一定要依赖QEMU 即使后来RedHat后来开发了libvirt,也只能简单的认为是个虚拟机管理工具,仍然需要通过用户空间QEMU来与KVM进行交互
二、KVM的安装
1.初始化服务器
#!/bin/bash
# 1. 设置主机名
hostnamectl set-hostname $1
echo 192.168.22.155 $1 >> /etc/hosts
# 2. 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
# 3. 配置yum源
cd /etc/yum.repos.d
rm -rf *
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum install epel-release -y
# 4. 安装必要软件
yum install vim -y
yum install net-tools -y
yum install wget -y
yum install yum-utils -y
yum install ntp -y
# 5. 时间同步
systemctl enable ntpd --now
# 6. 重启
reboot
2.CPU支持的VT技术
1)查看CPU是否支持VT基础
查看内核版本
unname -a

查看CPU是否支持VT技术
cat /proc/cpuinfo | grep -E 'vmx|svm'
没有输出则表示没有开启VT技术(虚拟化技术)

开启虚拟化,此时在尝试

有输出了,代表支持虚拟化
3.环境清理
如果之前安装过KVM,需要孩子选哪个这一步,没有安装过就可以跳过
bash
# 查询qemu|virt|KVM相关的软件
rpm -qa | egrep 'qemu|virt|KVM'
# 卸载qemu|virt|KVM相关的软件
yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
# 删除两个目录
rm -rf /var/lib/libvirt /etc/libvirt/
4.安装启动软件
1)安装软件
bash
# 安装相关的软件
yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager virt-viewer libvirt-python -y
# 或者 使用以下命令,使用组安装,会安装虚拟化相关的所有的软件包
yum groupinstall "虚拟化*" -y
软件说明
qemu-kvm: 主包
libvirt: API接口
virt-manager: 图形管理程序
virt-viewer: 图形管理插件
安装qemu, virt相关的软件包, 以及安装librbd1-devel的依赖包 如果安装的过程中出错, 可能是操作系统的版本问题, 可以通过以下命令更新内核版本
yum upgrade
2)启动libvirtd服务
bash
systemctl start libvirtd # 启动libvirtd服务
systemctl enable libvirtd # 设置libvirtd服务开机启动
systemctl status libvirtd # 查看状态
5.检查确认
bash
lsmod | grep kvm

三、客户机的安装
1.图形方式安装
1)上传镜像文件
将centos的镜像文件上传到宿主机系统
2)开启图形化界面
bash
# 安装图形化组件,安装好之后重启
yum groupinstall "X Window System" -y
reboot
virt-manager

此时是有乱码的,需要修改配置文件
bash
vim /etc/profile
# 在文件末尾添加
export LANG="en_US.UTF-8"
source /etc/profile
virt-manager

中文乱码解决了,之后创建虚拟机


找到你上传的linux最小镜像

之后直接一直下一步,磁盘大小、CPU数量、以及内存自己设定

选择网路模式和VMware一致用NAT模式通外网,Finsh之后安装linux系统

安装完成

3)配置文件与镜像文件
虚拟机镜像文件:相当于系统磁盘
bash
/var/lib/libvirt/images

虚拟机配置文件:虚拟机相关的配置,比如:磁盘、内存、网络等
bash
/etc/libvirt/qemu

2.命令行安装客户机
以上两种方式安装完成虚拟机之后,都会产生两个文件,一个镜像文件,一个配置文件。也就是说,如果创建了这两个文件,那么就相当于创建了一个新的虚拟机,命令行模式大致就是处于这个考量。
命令说明:
命令: virsh
说明: 来管理客户端及其管理程序的命令行界面工具,virsh 工具是构建在 libvirt 管理 API 上
bash
# 语法:
virsh list --all : 列出所有的虚拟机
virsh dominfo name : 显示虚拟机信息
virsh define name.xml : 定义虚拟机
virsh start name : 启动虚拟机
virsh destroy name : 强制关闭虚拟机
virsh shutdown name : 关闭虚拟机
virsh undefine name : 删除虚拟机
virsh suspend name : 挂起虚拟机
virsh resume name : 恢复被挂起的虚拟机
virsh domiflist name : 查看虚拟机网卡信息
1)复制镜像文件
bash
cp /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/test03.qcow2
2)复制配置文件
bash
cp /etc/libvirt/qemu/centos7.0.xml /etc/libvirt/qemu/test03.xml
3)修改配置文件
其中的uuid、interface-mac为16进制
bash
需要修改的选项:
• name(名字需要唯一)
• uuid(uuid需要唯一)
• devices-disk-source(指定镜像文件的路径)
• interface-mac(网络的Mac地址,只能修改后面三段)
比较两个文件不一样的地方:
diff centos7.xml test03.xml
4)定义虚拟机
bash
virsh define /etc/libvirt/qemu/test03.xml
完成之后多一台主机
4.飞机驾驶仓模式
飞机驾驶舱模式,也是通过图形界面去操作虚拟机,需要安装一个插件
bash
yum install -y cockpit && systemctl start cockpit && systemctl enable cockpit
# cockpit监听的端口号是:9090
# 打开浏览器,访问地址:https://192.168.217.130:9090/
# 默认账号密码为root 123456

就会监控一些一些状态