使用 KVM 和 Virt-Manager 进行虚拟化:您需要了解的一切

最后更新: 16/10/2025
作者: 艾萨克
  • KVM 通过 libvirt 和 virt‑manager 提供接近原生的性能并简化管理。
  • sVirt、SELinux/AppArmor、VLAN 和 SR-IOV 增强了安全性和隔离性。
  • 可扩展性和节省:编排、实时迁移和零许可。
  • 良好实践:virtio, 存储 SSD、优化网络和监控。

使用 KVM 和 virt-manager 的虚拟化环境

虚拟化在 Linux 它已经成熟到可以与专有平台正面竞争的程度,并且 KVM 与 virt-manager 一起形成了一个难以击败的组合。 接近原生的性能、零许可和强大的管理工具 使这一组合成为台式机、实验室和生产的制胜之选。

如果你通常使用 VirtualBox 或 VMware Workstation,你将会感兴趣知道 KVM 在内核中充当 1 型虚拟机管理程序,并在 硬件 陪伴,并选择 适合虚拟化的分布. 使用 libvirt、virt‑manager、virsh 和 virt‑install,可以轻松创建、监控和自动化 虚拟机,无论是在您的笔记本电脑上还是在私有云集群中。

UEFI虚拟化
相关文章:
在 BIOS 和 UEFI 中逐步启用虚拟化的完整指南

什么是 KVM 以及它在虚拟化环境中如何工作?

简单来说,KVM(基于内核的虚拟机)将Linux内核转变为高性能的虚拟机管理程序。 利用 CPU 虚拟化扩展(英特尔 VT-x、AMD-V)和扩展页面(EPT/RVI) 运行未经修改的客户系统并高效访问硬件。

KVM(基于内核的虚拟机)的定义

KVM 是一个内核模块(kvm.ko),附带 CPU 特定的驱动程序(kvm-intel.ko 或 kvm-amd.ko) 实现完全硬件虚拟化。与 QEMU 结合使用时,您可以获得设备模拟和对多种架构的支持,同时保持 性能非常接近裸机 当加速处于活动状态时。

KVM 架构与其他虚拟化解决方案的比较

与在主机操作系统上运行的 2 类虚拟机管理程序(例如 VirtualBox)不同,KVM 嵌入在内核中运行。 这种方法消除了中间层 并最大限度地降低开销。与 VMware ESXi 或 Hyper-V 等专有解决方案相比,KVM 的优势在于其灵活性、开放的生态系统以及 与 libvirt 等标准工具的兼容性.

KVM 对系统管理员的主要优势

  • 资源效率: 嵌入内核可减少延迟和开销;QEMU 可提供您所需的虚拟设备。
  • 可扩展性: 您可以增加虚拟机数量并根据需要调整 CPU、内存和存储,即使 实时迁移 主机之间。
  • 兼容性: 支持多种客户系统(Linux、BSD、 Windows等)与 驱动程序 网络和磁盘的半虚拟化(virtio)。
  • 硬件优化: 美国 VT-x/AMD-V 和 EPT/RVI 以加快客户执行速度并减少上下文切换。
  • 费用: 避免许可并促进深度定制的开源解决方案。

在云托管环境中使用 KVM 虚拟化的优势

在云场景中,KVM 非常适合,因为它 开放模型、高性能、易于集成 具有编排和存储堆栈。它通常出现在私有云和 OpenStack 等平台中。

云中的可扩展性和灵活性

KVM+libvirt 组合提供稳定的 API,易于集成 自动化工具(Ansible、Terraform)和编排器由于 动态资源分配.

运营和基础设施成本

没有虚拟机管理程序许可证,组织可以将预算重新用于硬件和支持。 服务器整合和虚拟机密度 很高,从而降低了资本支出 (CAPEX) 和运营支出 (OPEX),尤其是在私有云中。

云端性能和资源优化

借助 virtio 进行网络和存储,更多 快速后端(SSD/NVMe、Ceph、iSCSI),实现了极具竞争力的响应时间。 实时迁移 CPU 固定有助于平衡负载,而不会出现明显的滞后。

使用 KVM 实现虚拟化环境的安全性

安全是任何虚拟化平台的首要任务。KVM 提供了一系列隔离和控制机制,并且 libvirt 增加了策略和遏制层 与现代 Linux 发行版非常契合。

虚拟化中的主要安全挑战

常见风险:虚拟机逃逸, 虚拟设备上的攻击面、客户机之间的横向流量以及糟糕的虚拟网络分段。粗心的权限和存储配置也可能导致 数据泄露.

KVM 内置的安全机制

  • 硬件辅助虚拟化: Intel VT‑x 和 AMD‑V 有助于客户隔离并限制对实际硬件的访问。
  • 安全虚拟网络: 使用 libvirt 管理的 NAT、网桥和 VLAN,此外 虚拟机管理程序中的防火墙 分割东西向流量。
  • 带有 SELinux/AppArmor 的 sVirt: 强制限制每个虚拟机的 QEMU 进程,加强系统级别的隔离。
  自动修复 Windows 10 不起作用。原因、解决方案、替代方案

使用 KVM 保护虚拟化系统的最佳实践

  • 不断更新: 内核、KVM、QEMU 和 libvirt 必须保持更新才能快速修复 CVE。
  • 防火墙和隔离: 在主机上定义策略(iptables-nft/firewalld)并按功能隔离网络 VLAN/网桥.
  • 按关键性细分: 按风险级别对虚拟机进行分组,并应用细粒度的访问和移动控制。

KVM与其他虚拟化技术的比较

KVM 与 VMware

VMware 以其成熟的生态系统、官方支持和 众多商业工具. KVM 带来开放性、降低成本和 弹性大 与第三方集成。具体选择取决于支持、预算和标准化要求。

KVM 与 Hyper-V

在 Windows 环境中,Hyper-V 提供与 Microsoft 生态系统的本机集成。 当 Linux 成为主角时,KVM 是更好的选择,追求便携性、控制力和成本效率。

每个平台的用例和建议

  • 虚拟机: 非常适合 Linux 和云托管基础设施,具有定制需求和 自动化.
  • VMware: 最适合重视优质支持、高级功能和 综合套件.
  • Hyper-V: 如果 Windows Server 和 Microsoft 服务占主导地位,那么这是自然的选择。
  • 岑: 建议当 严格隔离 是主导标准。

在云服务器上配置和部署 KVM

安装 KVM 的先决条件

  • CPU支持: 在 BIOS/UEFI 中启用 VT‑x(英特尔)或 AMD‑V(AMD);建议使用 EPT/RVI 以获得最佳性能。
  • 操作系统: Ubuntu、Debian、Fedora、CentOS/Alma/Rocky、Arch/Manjaro、MX‑Linux 等。支持 KVM 自内核 2.6.20 起 向前。
  • recursos: RAM 和存储与虚拟机数量相匹配;SSD 或 NVMe 显著提升 输入/输出.

逐步安装(硬件和包装验证)

安装之前,请验证您的CPU是否支持虚拟化。 如果没有输出,请在 BIOS/UEFI 中启用 VT‑x/AMD‑V (看到 如何从 BIOS/UEFI 启用虚拟化).

egrep -c '(vmx|svm)' /proc/cpuinfo

您还可以使用 lscpu 检查虚拟化功能并确认 VT‑xo AMD‑V:

LC_ALL=C lscpu

在 Debian/Ubuntu 上,安装检查器并使用 kvm-ok 验证 KVM。 输出应该表明 /dev/kvm 存在 并且可以使用加速度。

sudo apt update
sudo apt install -y cpu-checker
kvm-ok

Debian/Ubuntu 及其衍生版本中的基础软件包: KVM、libvirt、bridge-utils 和 virt-manager.

sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

激活并测试 libvirtd;将您的用户添加到 libvirt 和 kvm 组。 请登录或重启系统后再申请群组。.

systemctl status libvirtd
sudo usermod -aG libvirt "$USER"
sudo usermod -aG kvm "$USER"

在 Arch/Manjaro 上,安装推荐的套件,包括 UEFI(OVMF)、NAT 的 DNS 和基于 nftables 的防火墙规则。 在 Manjaro 中,可以用 iptables-nft 替换 iptables。.

sudo pacman -S --needed virt-manager qemu-desktop libvirt edk2-ovmf dnsmasq iptables-nft
sudo pacman -S --asdeps swtpm   # TPM virtual
sudo systemctl enable --now libvirtd.service
sudo usermod -a -G libvirt,libvirt-qemu,kvm $USER
systemctl soft-reboot

在 MX‑Linux(基于 Debian)上,安装软件包后,检查模块和网络。 使用 lsmod 检查 kvm_intel 或 kvm_amd:

lsmod | grep -i kvm

管理默认虚拟网络(使用 virbr0 的 NAT): 激活它并将其设置为 引导.

virsh net-start default
virsh net-autostart default

为了加快客户网络的速度,在主机上加载 vhost_net。 它不是强制性的,但它可以提高 virtio-net 的性能.

sudo modprobe vhost_net

如果您需要从物理网络进行 L2 访问,请在 NIC 上创建桥接。 配置取决于您的发行版和网络管理器。;您可以使用 NetworkManager、systemd‑networkd 或 ifupdown,根据您的段调整 IP/DHCP。

使用 KVM 和 libvirt 管理虚拟机

  • 创建虚拟机: 几分钟内即可使用图形界面(virt-manager)或 CLI(virt-install);支持本地 ISO 和 HTTP/FTP/NFS 源。
  • 存储和网络: 使用 virsh/libvirt 管理池、卷、桥和 NAT;定义 virtio‑blk/scsi 和 virtio NIC 模型。
  • 实时迁移: 在主人之间无缝移动客人 负载平衡或维护.

管理和监控虚拟机

管理虚拟化环境的工具

libvirt 生态系统提供了完整的工具箱: 虚拟管理器 (图形用户界面), 维尔什 (命令行界面), 虚拟查看器 (通过 VNC/SPICE 的图形控制台)。所有这些都依赖于 libvirt API 并在本地或远程运行。

  Linux 中 SysRq 密钥的完整指南

性能监控和优化解决方案

对于实时指标,使用 虚拟顶层 (类似于 top)并辅以主机(htop、iostat)和客户指标的集合。 配置文件 I/O、CPU 和内存 有助于检测瓶颈并调整分配。

使用 KVM 实现虚拟机的自动化和编排

使用 Terraform(libvirt 提供程序)进行基础设施代码化, cloud‑init 用于自定义 镜像和 Ansible 在虚拟机生命周期管理方面是天然的盟友。在集群中,它集成了 无缝实时迁移和维护.

虚拟机管理器 (virt‑manager) – 快速使用

virt‑manager 提供了用于创建、配置和监控 KVM/QEMU 客户端的统一界面。 包括快照、网络管理和 VNC/SPICE 访问,以及 CPU、内存和设备的详细信息。

必备步骤:打开virt-manager并连接到QEMU/KVM;点击“新建”启动向导; 选择 ISO 或网络安装分配 RAM/CPU,定义磁盘和网络(默认使用 NAT virbr0 或网桥);检查并创建虚拟机。如果 SPICE 在您的环境中表现不佳, 使用 VNC 用于图形控制台。

在云环境中使用 KVM 的成本效益

基础设施节约模式

  • 许可: 与专有套件相比,使用 KVM,虚拟化软件的成本降至零。
  • 硬件: 主机进行更大程度的整合,充分利用 CPU、RAM 和存储.
  • 实现: 包含初始投资和设计自定义堆栈的自由。

使用 KVM 优化云资源

  • 动态分配: 根据需要调整 vCPU、RAM 和磁盘;在适当的时候固定 CPU 和大页面。
  • 合并: 每台主机的高密度虚拟机减少了购买量和 维修费用.
  • 能源效率: 更少的主机和更好的利用率可以减少 CPD 和私有云中的电力消耗。

KVM 环境中的可扩展性和性能

可扩展性的最佳实践

  • 均衡分布: 分配 CPU、内存和存储;防止在没有遥测的情况下过度订阅。
  • 容量规划: 衡量趋势并及时增长;KVM 允许您扩展资源而不会遇到重大挫折。

提高高负载下的性能

  • 专用 CPU 和内存: vCPU 固定、NUMA 感知和内存预留可改善延迟。
  • 硬件加速: 确保 VT‑x/AMD‑V 处于活动状态;启用 维蒂奥 在来宾中用于网络和磁盘。
  • I/O优化: SSD/NVMe 存储、多线程队列和调整缓存(回写/无),适用于密集负载。

云端 KVM 优化存储和网络

在网络上,它减少了延迟 SR‑IOV、vhost_net 和 VLAN 分段良好。对于数据,将快速卷与读/写缓存相结合,如果适用, Ceph 或 iSCSI 在分布式后端。

使用 KVM 排除常见虚拟化问题

性能问题及其解决方案

  • CPU过载: 使用 htop/virt‑top 检查;调整 vCPU、启用固定或使用实时迁移重新部署。
  • 内存不足: 增加分配的 RAM,评估大页面/膨胀,并防止主机交换。
  • 慢速行驶: 使用 SSD/NVMe、virtio-SCSI 驱动程序和足够的缓存;使用 iostat/fio 进行测量。

常见设置错误及其解决方法

  • 无法启动的虚拟机: 评论 日志 来自 /var/log 中的 libvirt/QEMU;验证磁盘路径和 OVMF/BIOS 固件.
  • 无网络: 检查 libvirt(virbr0)中的网桥/NAT,以及“默认”网络是否处于活动状态并自动启动。
  • 存储问题: 检查 virsh/virt‑manager 中的 SELinux/AppArmor 权限、池和卷。

网络故障排除和诊断

  • 虚拟网络配置: 验证虚拟机是否位于正确的网络上以及主机桥是否具有连接。
  • 防火墙策略: 检查 iptables‑nft/firewalld;打开必要的端口和 避免规则重叠.
  • 使用 virtio 进行改进: 使用 virtio NIC,并且(如果适用) SR‑IOV 以减少开销和延迟。

云中 KVM 虚拟化的未来

虚拟化和 KVM 的新兴趋势

  • 预测管理 IA: 预测峰值并自动调整资源的模型。
  • 与容器的融合: 具有智能放置决策的混合 VM+容器环境。
  • 主动检测: 实时分析 预防事故发生 性能和安全性。

KVM 在云托管发展中的作用

KVM 将继续成为私有云和公共云的支柱,因为它 稳定的 API(libvirt)、AI 集成 以及不断发展的生态系统。先进的自动化将减少手动任务并优化成本。

KVM 如何适应管理员的需求

该平台正在向 自动扩展、自适应安全和预测监控,保持任何 SRE/DevOps 团队所欣赏的精细控制。

QEMU/KVM、libvirt 和连接:实用技巧

QEMU 通过提供设备和多架构支持来补充 KVM;libvirt 通过 统一稳定的API了解最有用的连接 URI:

  • qemu:///会话 (非特权本地):每个用户管理,没有高级网络。
  • qemu:///系统 (特权本地):主机范围的管理,非常适合服务器。
  • qemu+ssh://用户@主机/系统 (远程):安全地控制外部 KVM 虚拟机管理程序。
  如何使用有效命令释放 Linux 空间:完整指南

对于客人,优先考虑 virtio 设备 (网络和磁盘)。除非出于兼容性考虑,否则应避免使用 Realtek 8139 或 IDE 等通用模拟,因为 它们消耗更多 CPU 并降低 I/O 性能.

轻量级虚拟化、图形和固件

如果您的虚拟机需要 UEFI,请安装 edk2-ovmf. 为了兼容 Windows 11 或其他场景,添加虚拟 TPM swtpm。在图形控制台中尝试 SPICE,如果运行效果不佳, 切换到 VNC 来自 virt‑manager。

利用 KVM 和 SysAdminOK 最大限度地发挥虚拟化的优势

作为一种训练路线,专注于明确的目标是很有用的。 了解如何安装 KVM/QEMU、libvirt 和 virt-manager;使用与 libvirt 的特权连接;以及使用图形向导安装 Linux VM 是快速有效的步骤。

一个小的实际练习可以包括:验证 virt-manager 正在使用 qemu:///系统,检查可用的默认网络和存储,并使用 virtio 部署 Linux 客户端 网络和磁盘 来自本地 ISO。

备份和数据保护

的策略 备份 这至关重要。有一些解决方案可以与基于 KVM 的平台集成,例如 Proxmox、oVirt、Red Hat Virtualization、Oracle Linux Virtualization Manager 或 华为 融合计算这些工具通常提供重复数据删除、压缩、增量备份和 粒度恢复 (在文件级别),以及计划任务、云端和异地选项。确认与您的堆栈的兼容性(某些堆栈不支持“原生 KVM”),并充分利用 试用期 验证性能和 RTO/RPO。

虚拟机管理器:安装和工作流程

实际上,使用 virt-manager 的流程非常简单:更新系统、安装软件包、运行工具,然后 连接到 QEMU/KVM从那里,向导将指导您选择安装介质、资源和网络。

后续管理同样简单: 启动/停止虚拟机调整 CPU/RAM、编辑磁盘和网络,并在进行敏感更改之前创建快照。借助 libvirt,您可以根据需要在 CLI(virsh/virt-install)和 GUI(virt-manager)之间无缝切换。

KVM 网络:默认 NAT 和网桥

默认情况下,libvirt 使用 NAT 和网桥创建“默认”网络 虚拟机如果您需要虚拟机直接从 LAN 访问,请在物理网卡上设置网桥并将其分配给虚拟机。按 VLAN 分段 单独的环境 (dev、pre、prod)并记录地址。

请记住,您可以轻松激活并自动启动默认网络,并将其与 域名 用于 libvirt 控制的 NAT 网络上的 DHCP/DNS。

控制台、驱动程序和用户体验

在 Linux 和 Windows 客户机上安装驱动程序 维蒂奥 从一开始就使用网络和存储来提升性能。如果 SPICE 出现问题,请从 virt-manager 中的“显示详细信息”切换到 VNC; 每个环境的行为可能不同 取决于主机 GPU/驱动程序。

图形连接与 virt-viewer 和嵌入式 virt-manager 查看器原生集成,从而轻松 立即控制台访问 创建虚拟机后。

良好的操作规范

设置策略:一致的虚拟机命名, 存储池 通过性能、分段网络、具有到期日期的快照和经过测试的备份进行区分。它集成了监控(CPU、内存、I/O 警报)和 维护流程 具有更改窗口和实时迁移。

为了安全地连接到虚拟机管理程序,请使用 qemu+ssh 使用密钥并按组 (libvirt/libvirt‑qemu) 和角色限制访问。控制 SELinux/AppArmor 权限并防止运行 特权管理 来自通用帐户。

以上所有内容表明,使用 KVM、libvirt 和 virt-manager,您可以构建一个强大、安全且高效的平台,而无需担心许可成本: 从系统管理员的笔记本电脑到 CPD 中的集群,堆栈响应、扩展,并可以优雅地实现自动化。