QEMU、KVM、libvirt 和 Virt-Manager 是构建虚拟化解决方案的关键组件,它们各自承担不同的角色,但相互协作以提供强大的虚拟化功能。
QEMU 是一个开源的通用硬件模拟器和虚拟机管理器。既可以作为纯模拟器运行(性能较低),也可以结合 KVM 提供硬件加速的虚拟化(性能较高,媲美裸机)。
KVM 是 Linux 内核中的一个模块,直接运行在 Linux 内核上,借助硬件虚拟化技术,可达到接近原生硬件的性能。
libvirt 是一个开源的 API 和工具集,用于管理虚拟化平台(如 QEMU/KVM、Xen、VMware、Hyper-V 等)。
Virt-Manager 是一个基于图形界面的管理工具,本身并不直接管理虚拟机,专门用于管理 libvirt 提供的虚拟机。主要面向不熟悉命令行的用户,提供方便的图形化界面。
KVM Linux 内核自带,与 QEMU 集成后实现高性能的虚拟化。libvirt 简化了 QEMU 的复杂性,提供了命令行操作的管理功能,是虚拟化管理的核心工具。Virt-Manager 是 libvirt 的图形界面,适合需要GUI图形化界面的用户更便捷的管理虚拟机。
安装虚拟机运行所需要的组件
1 | yay -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables swtpm |
qemu是一个通用且开源的虚拟机和模拟器。它允许您在一个操作系统中运行其他操作系统,支持完整的系统虚拟化和进程仿真。
virt-manager是一个图形化的虚拟机管理工具,简化了虚拟机的创建、管理和监控。
virt-viewer是一个轻量级的远程查看工具,允许连接到虚拟机的图形控制台(通过 SPICE 或 VNC 协议)。
dnsmasq是一个轻量级的 DNS 和 DHCP 服务器。Libvirt 使用它为虚拟机提供 NAT 网络连接(默认设置)。
vde2是一个虚拟交换机,用于创建虚拟网络环境。可选工具,主要用于高级虚拟网络配置,适合需要复杂网络拓扑的用户。
bridge-utils提供了桥接网络的管理工具,用于将虚拟机的网络接口桥接到物理网络接口。如果您需要虚拟机直接访问外部网络(桥接模式),这是必需的。
openbsd-netcat是一个用于网络调试和数据传输的工具,支持 TCP 和 UDP 协议。Libvirt 使用它进行一些网络相关的任务(例如,远程主机之间的数据传输)。
ebtables是一个用户空间工具,用于管理 Linux 内核的网桥过滤表。在桥接网络中,管理虚拟机的网络流量规则时需要使用。
swtpm是一个软件模拟的 TPM,允许虚拟机使用 TPM 功能而不需要物理硬件支持。支持 Windows 11 或其他需要 TPM 的应用场景。
在QEMU、virt-manager下实现剪贴板共享、文件拖放功能
1 | yay -S spice-vdagent qemu-guest-agent |
- spice-vdagent 主要用于增强用户体验,提供剪贴板共享、文件拖放等功能。
- qemu-guest-agent 则提供虚拟机与宿主机之间的管理和通信能力,允许虚拟机执行更高效的操作和管理任务。
安装完毕后,需在 virt-manager (Linux宿主机端)设置 虚拟机
- 显示协议 Spice
Spice 服务器 - 类型:Spice 服务器
- 添加硬件(两个):
通道:名称选择 com.redhat.spice.0
通道:名称选择 org.qemu.guest_agent.0
在虚拟机内(客户机、所安装的虚拟机系统)安装Spice Guest Tools软件,实现剪贴板共享、文件拖拽等功能的支持。
如运行时出现“启动域时出错: 所需操作无效:网络 ‘default’ 未激活”,需启动 default 网络。
启动 default 网络
1 | sudo virsh net-start default |
设置开机自动启动
1 | sudo virsh net-autostart default |