广告

Linux 虚拟化实战:KVM 与 QEMU 搭建全流程指南

1. 环境准备

1.1 物理主机与 BIOS 设置

硬件虚拟化支持是搭建 KVM 的前提,请确认 CPU 支持 VT-x/AMD-V,并在 BIOS/UEFI 中启用该特性。同时,若计划进行 PCIe 设备直通(PCI Passthrough),还需要启用 VT-d/AMD-Vi 等 IOMMU 功能。未开启这些特性,将导致后续的虚拟化能力受限或无法启动。

在准备阶段,建议记录以下关键项:CPU 支持情况、BIOS 设置状态、当前内核是否加载了 virtualization 模块。这样可以快速定位问题并降低排错成本。

grep -E "vmx|svm" /proc/cpuinfo || true

1.2 Linux 发行版与内核版本

选择一个稳定的 Linux 发行版作为主机系统,常见的有 Ubuntu Server、Debian、RHEL/CentOS、Fedora 等。对虚拟化性能与兼容性而言,内核版本应尽量较新且带有稳定的 virt 层(libvirt、QEMU、KVM 等组件)。如果需要长期支持,建议使用 LTS 版本并保持内核的及时更新。

同时,确保主机系统具备充足的内存和存储资源,以支撑多台虚拟机的运行,避免因资源争抢导致性能波动。

lsb_release -a
uname -r
df -h /  # 查看根分区剩余空间

1.3 硬件隔离、网络与存储规划

合理的网络与存储规划能提升虚拟化环境的可用性。常用做法包括:创建独立的网桥 (bridge) 或使用 NAT/私有网络、为虚拟机准备专用的存储池、以及对虚拟机镜像进行分级备份。

在设计阶段,应明确以下要点:网络拓扑、镜像存放路径、存储池类型(文件、块存储)、以及备份策略,以确保后续的创建与扩展流程顺畅。

# 安装 bridge-utils 以创建网桥
sudo apt-get update
sudo apt-get install -y bridge-utils# 示例:创建一个桥接网络
# 具体配置可能因发行版与网络环境不同,请结合实际网段调整

2. 安装 KVM 与 QEMU

2.1 安装包与仓库

安装 KVM 与 QEMU 相关组件,是实现 Linux 虚拟化的第一步。常见组件包括 qemu-kvm、libvirt、virt-manager 等,数量可根据需要灵活增减。

在基于 Debian/Ubuntu 的系统上,典型的安装命令如下,能够同时安装必要的虚拟化前端与后端组件:

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

在基于 Red Hat/CentOS/Fedora 的系统上,可以通过 EPEL 或系统自带仓库安装相应包:

sudo dnf install -y @virtualization 从 system
sudo dnf install -y virt-manager libvirt-daemon-kvm qemu-kvm

2.2 启用 libvirt、virsh 与 virt-manager

libvirt 是 KVM 的核心管理守护进程,通过 virsh 命令行与 virt-manager 图形界面可以高效创建与管理虚拟机。

启用并启动相关服务,以及将当前用户加入 libvirt 组,确保具备管理权限:

sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd
sudo usermod -aG libvirt $USER

3. 虚拟机创建与管理

3.1 使用 virsh 与 virt-install 创建虚拟机

通过 virsh 可以实现对虚拟机生命周期的细粒度控制,当然也可以借助 virt-install 进行快速创建。下面给出一个常见的创建流程示例,包含名称、内存、CPU、磁盘与网络等核心参数。

在命令行创建虚拟机时,请确保镜像路径、存储池及网络配置事先准备就绪。

virt-install \--name ubuntu-test \--ram 4096 \--vcpus 2 \--os-type linux \--os-variant ubuntu20.04 \--disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=20 \--network network=default \--graphics vnc,listen=0.0.0.0 \--cdrom /path/to/ubuntu-20.04-live-server-amd64.iso

virsh 命令也能对已有虚拟机进行控管,如启动、暂停、快照等,便捷性与灵活性都较高。

virsh define /path/to/ubuntu-test.xml
virsh start ubuntu-test
virsh shutdown ubuntu-test
virsh dominfo ubuntu-test

3.2 网络、存储镜像与性能优化

为了获得更佳的网络性能与存储吞吐,建议使用稳定的网桥与本地镜像缓存策略。为虚拟机分配合适的磁盘镜像大小与缓存模式,是稳定运行的关键。

Linux 虚拟化实战:KVM 与 QEMU 搭建全流程指南

常见优化点:启用 virtio 驱动、选择带缓存模式的磁盘、对 CPU 拟态进行适当配置、以及使用巨页内存提高性能。

# 创建一个带 VirtIO 磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-test.qcow2 40G# virtio 网络设备通常在默认网络配置下生效,确保客机安装 virtio 驱动

4. 性能调优与安全加固

4.1 CPU/内存调控

合理分配 CPU 与内存资源,避免过度分配是提升虚拟化环境稳定性的关键。可以通过设置 vCPU、RAM 以及 CPU 拟态策略,确保宿主机有足够的资源来处理主机进程与 IO 任务。

在实际生产中,建议使用限额与权重来进行资源调度,必要时开启 NUMA 优化以提升本地内存访问速度。

# 查看当前 libvirt CPU 与内存分配状况
virsh dominfo ubuntu-test# 设置对 guest 的内存与 vCPU 调整(示例:2G 内存、2 个 vCPU)
virsh setmem ubuntu-test 2048 --config --live
virsh setvcpus ubuntu-test 2 --config --live

4.2 安全与隔离

安全性与隔离是生产环境的重要考量,应该结合 selinux/apparmor、防火墙策略、以及虚拟机之间的隔离级别进行综合防护。

建议在初始阶段就设定最小权限原则,并对管理接口、网桥与 API 访问进行严格控制。

# 启用 SELinux/防火墙策略,限制 libvirt 的网络流量
sudo firewall-cmd --permanent --add-service=libvirt
sudo firewall-cmd --reload

广告

操作系统标签