RHCE 必考考点:RHEL 9 KVM虚拟化配置全流程

  |   0 评论   |   0 浏览

图片

大家好,欢迎回到RHCE9学习笔记系列。这是本系列的最后一篇文章,我们将一起探索Linux世界中最核心的虚拟化技术——KVM(Kernel-based Virtual Machine) 。经过前面十一篇文章的学习,我们已经掌握了从基础命令到自动化运维的完整知识体系。今天,我们将把这些知识应用到虚拟化环境中,学习如何在RHEL 9上创建、管理和使用虚拟机。

虚拟化是现代数据中心的基础。无论是公有云、私有云,还是容器平台,底层都离不开虚拟化技术的支撑。掌握KVM,不仅能让你更好地理解虚拟化原理,还能为学习OpenStack、容器等高级技术打下坚实基础。

1. 虚拟化基础概念

1.1 什么是虚拟化

虚拟化是一种资源管理技术,它将物理资源(CPU、内存、磁盘、网络)抽象为逻辑资源,允许多个操作系统(称为虚拟机)在同一台物理机上同时运行,彼此隔离。虚拟化的核心组件是Hypervisor (虚拟机监视器),它负责管理物理资源并分配给各个虚拟机。

1.2 虚拟化类型

  • Type 1(裸金属虚拟化) :Hypervisor 直接运行在硬件上,没有宿主机操作系统。例如 VMware ESXi、Microsoft Hyper-V、KVM(虽然KVM运行在Linux内核中,但通常也被视为Type 1)。
  • Type 2(宿主型虚拟化) :Hypervisor 运行在操作系统之上,如 VMware Workstation、VirtualBox。

KVM 是 Linux 内核的一部分,它将 Linux 内核转变为一个 Type 1 Hypervisor,兼具性能和灵活性,是 RHEL 官方支持的虚拟化解决方案。

1.3 RHEL 虚拟化架构

RHEL 的虚拟化栈由以下组件构成:

  • KVM :内核模块,提供核心虚拟化能力(CPU、内存虚拟化)。
  • QEMU :用户空间程序,模拟硬件设备(磁盘、网络、USB等)。
  • libvirt :管理 API 和服务,提供统一的管理接口。
  • 管理工具<span leaf="">virsh</span>(命令行)、<span leaf="">virt-manager</span>(图形界面)、<span leaf="">virt-install</span>(虚拟机创建)。

2. 检查硬件虚拟化支持

KVM 需要 CPU 支持硬件虚拟化扩展(Intel VT-x 或 AMD SVM)。

2.1 检查 CPU 虚拟化支持

# Intel CPUgrep -e 'vmx' /proc/cpuinfo
# AMD CPUgrep -e 'svm' /proc/cpuinfo

如果有输出,说明 CPU 支持虚拟化。

2.2 检查 KVM 模块是否加载

lsmod | grep kvm

输出示例:

kvm_intel             409600  0kvm                  1134592  1 kvm_intelirqbypass              16384  1 kvm

如果没有输出,可能需要加载模块:

modprobe kvmmodprobe kvm_intel   # Intel CPU# 或modprobe kvm_amd     # AMD CPU

3. 安装 KVM 及相关组件

在 RHEL 9 上安装 KVM 非常简单,只需几个命令:

# 安装 KVM、QEMU 和 libvirtdnf install -y qemu-kvm libvirt virt-install virt-manager virt-viewer
# 安装其他辅助工具dnf install -y virt-top libguestfs-tools
  • <span leaf="">qemu-kvm</span>:QEMU 的 KVM 加速版本
  • <span leaf="">libvirt</span>:虚拟化管理守护进程
  • <span leaf="">virt-install</span>:命令行创建虚拟机的工具
  • <span leaf="">virt-manager</span>:图形化管理工具
  • <span leaf="">virt-viewer</span>:VNC/SPICE 客户端
  • <span leaf="">virt-top</span>:类似 top 的虚拟机监控工具

4. 启动并配置 libvirt

4.1 启动 libvirtd 服务

systemctl start libvirtdsystemctl enable libvirtd

4.2 验证服务状态

systemctl status libvirtd

4.3 查看默认网络

libvirt 会创建一个默认的 NAT 网络(virbr0),用于虚拟机与外部通信:

virsh net-list# 输出示例:# Name                 State      Autostart     Persistent# ----------------------------------------------------------# default              active     yes           yes
ip addr show virbr0

5. 配置网桥(Bridge)

默认的 NAT 网络可以让虚拟机访问外网,但外网无法直接访问虚拟机。如果需要虚拟机与宿主机在同一网段(如部署服务),需要配置网桥。

5.1 使用 nmcli 创建网桥

# 创建网桥接口nmcli connection add type bridge con-name br0 ifname br0
# 配置网桥 IP(可选,如果不配则从 DHCP 获取)nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual
# 将物理网卡 ens160 添加到网桥nmcli connection add type bridge-slave con-name bridge-slave-ens160 ifname ens160 master br0
# 激活网桥nmcli connection up br0

5.2 验证网桥

ip addr show br0bridge link show

6. 创建虚拟机

6.1 准备操作系统镜像

从官方源下载 ISO 镜像,例如 RHEL 9 的安装镜像:

wget https://access.redhat.com/downloads/content/rhel-9/.../rhel-9.0-x86_64-dvd.isomv rhel-9.0-x86_64-dvd.iso /var/lib/libvirt/images/

6.2 使用 virt-install 命令行创建

<span leaf="">virt-install</span> 是创建虚拟机的命令行工具,适合脚本化部署。

virt-install \  --name rhel9-vm \  --memory 2048 \  --vcpus 2 \  --disk path=/var/lib/libvirt/images/rhel9-vm.qcow2,size=20 \  --cdrom /var/lib/libvirt/images/rhel-9.0-x86_64-dvd.iso \  --os-variant rhel9.0 \  --graphics vnc,listen=0.0.0.0 \  --network bridge=br0 \  --noautoconsole

参数说明:

  • <span leaf="">--name</span>:虚拟机名称
  • <span leaf="">--memory</span>:内存大小(MB)
  • <span leaf="">--vcpus</span>:CPU 核心数
  • <span leaf="">--disk</span>:磁盘路径和大小(GB),格式 qcow2 支持快照
  • <span leaf="">--cdrom</span>:ISO 镜像路径
  • <span leaf="">--os-variant</span>:操作系统类型(可通过 <span leaf="">osinfo-query os</span> 查看)
  • <span leaf="">--graphics</span>:图形协议(VNC 或 SPICE)
  • <span leaf="">--network</span>:网络类型(bridge 或 network)
  • <span leaf="">--noautoconsole</span>:不自动打开控制台

6.3 使用 virt-manager 图形界面创建

在 X11 环境下,可以启动图形管理工具:

virt-manager

界面操作直观,适合初学者。点击“新建虚拟机”,按向导完成配置即可。

7. 虚拟机管理 – virsh 命令

<span leaf="">virsh</span> 是 libvirt 的命令行管理工具,功能强大,是管理虚拟机的核心命令。

7.1 基本操作

# 列出所有虚拟机(包括运行和停止的)virsh list --all
# 启动虚拟机virsh start rhel9-vm
# 关闭虚拟机(正常关机)virsh shutdown rhel9-vm
# 强制关闭(断电)virsh destroy rhel9-vm
# 重启虚拟机virsh reboot rhel9-vm
# 设置开机自启virsh autostart rhel9-vmvirsh autostart --disable rhel9-vm   # 取消自启

7.2 查看虚拟机信息

# 查看虚拟机配置virsh dominfo rhel9-vm
# 查看虚拟机详细配置(XML格式)virsh dumpxml rhel9-vm
# 查看虚拟机磁盘信息virsh domblklist rhel9-vm

7.3 连接虚拟机控制台

对于没有图形界面的虚拟机,可以使用串行控制台:

# 在虚拟机中需要配置串行控制台(grub 添加 console=ttyS0)virsh console rhel9-vm# 按 Ctrl+] 退出

7.4 虚拟机快照

快照可以保存虚拟机在某个时刻的状态,方便回滚。

# 创建快照virsh snapshot-create-as rhel9-vm --name clean-install
# 列出快照virsh snapshot-list rhel9-vm
# 恢复到快照virsh snapshot-revert rhel9-vm clean-install
# 删除快照virsh snapshot-delete rhel9-vm clean-install

7.5 克隆虚拟机

# 完整克隆(创建独立副本)virt-clone --original rhel9-vm --name rhel9-clone --file /var/lib/libvirt/images/rhel9-clone.qcow2

8. 虚拟机磁盘管理

8.1 磁盘格式

  • raw :原始格式,性能最好,但不支持快照,占用实际大小。
  • qcow2 :QEMU 的 Copy-On-Write 格式,支持快照、压缩、加密,支持稀疏文件(只占用实际使用的大小),推荐使用。

8.2 创建磁盘

# 创建 qcow2 磁盘qemu-img create -f qcow2 /var/lib/libvirt/images/new-disk.qcow2 10G
# 查看磁盘信息qemu-img info /var/lib/libvirt/images/new-disk.qcow2

8.3 添加磁盘到虚拟机

# 热添加磁盘(虚拟机运行时)virsh attach-disk rhel9-vm /var/lib/libvirt/images/new-disk.qcow2 vdb --live --config
# 永久添加(修改配置)virsh attach-disk rhel9-vm /var/lib/libvirt/images/new-disk.qcow2 vdb --config

8.4 调整磁盘大小

# 增加磁盘容量(需要先在宿主机操作)qemu-img resize /var/lib/libvirt/images/rhel9-vm.qcow2 +10G
# 在虚拟机中扩展文件系统# 需要进入虚拟机,使用 xfs_growfs 或 resize2fs

9. 虚拟机网络配置

9.1 网络类型

  • NAT(Network Address Translation) :虚拟机通过宿主机的 IP 访问外网,外网无法直接访问虚拟机。默认网络 <span leaf="">default</span> 就是 NAT 模式。
  • Bridge(网桥) :虚拟机直接与宿主机在同一网络,可以拥有独立 IP。
  • Host-only :虚拟机与宿主机之间形成一个私有网络,无法访问外网。

9.2 查看网络

virsh net-list --allvirsh net-dumpxml default

9.3 创建自定义网络

创建桥接网络配置文件 <span leaf="">/etc/libvirt/qemu/networks/mynet.xml</span>

<network>  <name>mynet</name>  <bridge name="virbr1"/>  <forward mode="nat"/>  <ip address="192.168.100.1" netmask="255.255.255.0">    <dhcp>      <range start="192.168.100.100" end="192.168.100.200"/>    </dhcp>  </ip></network>

定义并启动网络:

virsh net-define /etc/libvirt/qemu/networks/mynet.xmlvirsh net-start mynetvirsh net-autostart mynet

10. 实战:创建一台 CentOS 9 Stream 虚拟机

让我们将所学知识整合起来,创建一个 CentOS 9 Stream 虚拟机。

10.1 下载 ISO 镜像

wget https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-dvd1.isomv CentOS-Stream-9-latest-x86_64-dvd1.iso /var/lib/libvirt/images/

10.2 创建虚拟机

virt-install \  --name centos9 \  --memory 2048 \  --vcpus 2 \  --disk path=/var/lib/libvirt/images/centos9.qcow2,size=20 \  --cdrom /var/lib/libvirt/images/CentOS-Stream-9-latest-x86_64-dvd1.iso \  --os-variant centos-stream9 \  --graphics vnc,listen=0.0.0.0 \  --network network=default \  --noautoconsole

10.3 查看虚拟机状态

virsh list --all# 输出:# Id   Name       State# -------------------------# 5    centos9    running

10.4 获取 VNC 端口

virsh vncdisplay centos9# 输出::1

使用 VNC 客户端连接宿主机的 IP 和端口(如 5901)完成系统安装。

10.5 安装完成后连接

# 查看虚拟机 IP(如果有 DHCP)virsh domifaddr centos9

10.6 设置开机自启

virsh autostart centos9

11. 监控与性能优化

11.1 使用 virt-top 监控

virt-top

类似 <span leaf="">top</span>,可以实时查看虚拟机的 CPU、内存、磁盘 I/O 使用情况。

11.2 调整 CPU 亲和性

将虚拟机绑定到特定的物理 CPU 核心,提升性能:

virsh vcpupin centos9 0 2   # 将 vCPU 0 绑定到物理 CPU 2virsh vcpupin centos9 1 3   # 将 vCPU 1 绑定到物理 CPU 3

11.3 内存优化

启用 KSM(Kernel Same-page Merging)可以合并相同的内存页,减少内存占用:

systemctl start ksmsystemctl enable ksm

12. VMware Workstation 在 RHEL 9 上的安装(补充)

虽然 KVM 是 RHEL 原生的虚拟化方案,但有时我们也需要在 Linux 上运行 VMware Workstation。安装步骤如下:

12.1 下载安装包

wget https://download3.vmware.com/software/WKST-1702-LX/VMware-Workstation-Full-17.0.2-21581411.x86_64.bundle

12.2 安装依赖

dnf groupinstall "Development Tools"dnf install -y elfutils-libelf-devel kernel-devel

12.3 执行安装

chmod +x VMware-Workstation-Full-17.0.2-21581411.x86_64.bundle./VMware-Workstation-Full-17.0.2-21581411.x86_64.bundle

总结与展望

本篇我们系统学习了 RHEL 9 虚拟化技术:

  • 虚拟化基础 :KVM、QEMU、libvirt 的架构关系
  • 环境准备 :检查 CPU 支持、安装 KVM 组件
  • 网络配置 :NAT 与 Bridge 模式的配置方法
  • 虚拟机创建<span leaf="">virt-install</span> 命令行和 <span leaf="">virt-manager</span> 图形界面
  • 虚拟机管理<span leaf="">virsh</span> 常用命令、快照、克隆、磁盘管理
  • 性能优化 :CPU 绑定、KSM 内存去重
  • VMware 安装 :在 RHEL 9 上安装 VMware Workstation

至此,我们的 RHCE9 学习笔记系列已全部完成。我们从 Linux 基础入门开始,经历了文件操作、权限管理、进程服务、软件包、网络配置、防火墙安全、存储管理、Shell 脚本、计划任务、Ansible 自动化,最后以虚拟化收尾。这条学习路径覆盖了 RHCE 考试的核心知识点,也包含了实际运维工作中的常用技能。

希望这个系列的文章能对你有所帮助。Linux 的学习之路没有终点,唯有不断实践、不断探索,才能真正掌握它。如果在学习过程中有任何疑问,欢迎在评论区交流讨论。

祝你学习顺利,早日通过 RHCE 认证!

往期回顾:

RHCE认证考试学习(十一):计划任务与Ansible自动化

RHCE认证考试学习笔记(十):Shell脚本编程

RHCE认证考试学习笔记(九):文件系统与存储管理

RHCE认证学习笔记(八):防火墙与SELinux,筑牢系统安全防线

RHCE工程师认证学习笔记(七):网络配置与管理

RHCE认证学习笔记(六):软件包管理 – 从RPM到YUM仓库

RHCE认证学习笔记(五):进程管理与服务控制

RHCE认证学习笔记(四):用户管理与权限控制

RHCE认证学习笔记(三):重定向、管道与正则表达式

RHCE认证学习笔记(二):文件操作与Vim编辑器

RHCE认证考试学习笔记(一):Linux基础入门


标题:RHCE 必考考点:RHEL 9 KVM虚拟化配置全流程
作者:shuaiqijun
地址:https://www.shuaiqijun.com/articles/2026/03/26/1774505113344.html