二、虚拟化技术与云计算-5-kvm-virtualization-guide-part1-environment-setup

KVM 虚拟化技术实战指南 - 第一部分:环境准备与基础

文档信息

  • 系列: KVM 虚拟化技术实战指南
  • 部分: 第一部分 - 环境准备与基础
  • 版本: V1.0
  • 创建日期: 2026 年 3 月 9 日
  • 对应视频: 6-06, 12-12
  • 预计阅读时间: 1-2 小时

目录

  1. [KVM 虚拟化概述](#KVM 虚拟化概述)
  2. 硬件要求与检测
  3. 宿主机系统选择
  4. [KVM 安装与配置](#KVM 安装与配置)
  5. 管理工具安装
  6. 环境验证
  7. 常见问题排查

KVM 虚拟化概述

什么是 KVM?

KVM (Kernel-based Virtual Machine) 是一个开源的虚拟化技术,它将 Linux 内核转变为一个 Hypervisor。

复制代码
┌─────────────────────────────────────────────────────────┐
│              KVM 架构概览                                │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  用户空间                                               │
│  ┌─────────────────────────────────────────────────┐   │
│  │              QEMU (设备模拟)                     │   │
│  │  - I/O 设备、BIOS、硬件模拟                       │   │
│  └─────────────────────────────────────────────────┘   │
│                        ↓                                │
│  ┌─────────────────────────────────────────────────┐   │
│  │              libvirt (管理接口)                  │   │
│  │  - 统一的 API、virsh、virt-manager              │   │
│  └─────────────────────────────────────────────────┘   │
│                        ↓                                │
│  内核空间                                               │
│  ┌─────────────────────────────────────────────────┐   │
│  │              KVM 内核模块                        │   │
│  │  - kvm.ko (核心)                                 │   │
│  │  - kvm-intel.ko 或 kvm-amd.ko (CPU 特定)          │   │
│  └─────────────────────────────────────────────────┘   │
│                        ↓                                │
│  硬件层                                                 │
│  ┌─────────────────────────────────────────────────┐   │
│  │  CPU (VT-x/AMD-V) + 内存 + 存储 + 网络           │   │
│  └─────────────────────────────────────────────────┘   │
│                                                         │
└─────────────────────────────────────────────────────────┘

KVM 的核心特性

特性 说明 优势
内核集成 作为 Linux 内核模块运行 稳定性好,性能优
硬件辅助 依赖 Intel VT-x/AMD-V 接近原生性能
开源免费 GPL 许可 无许可成本
生态丰富 QEMU、libvirt、OpenStack 工具链完善
灵活扩展 支持多种 Guest OS Linux、Windows、BSD 等

KVM vs 其他虚拟化技术

复制代码
┌─────────────────────────────────────────────────────────┐
│              虚拟化技术对比                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  VMware ESXi:                                           │
│  - 商业软件,功能完善                                   │
│  - 价格昂贵 ($3,595/CPU)                               │
│  - 企业级首选                                           │
│                                                         │
│  Microsoft Hyper-V:                                     │
│  - Windows 生态集成                                     │
│  - 免费 (Windows Server 包含)                           │
│  - 适合 Windows 环境                                     │
│                                                         │
│  KVM:                                                   │
│  - 开源免费,Linux 原生                                 │
│  - 性能优异 (98-99% 原生)                               │
│  - 适合云环境和开发者                                   │
│                                                         │
│  Xen:                                                   │
│  - 半虚拟化先驱                                         │
│  - AWS 早期使用                                          │
│  - 现被 KVM 超越                                         │
│                                                         │
└─────────────────────────────────────────────────────────┘

硬件要求与检测

CPU 要求

必要条件:

  • ✅ Intel VT-x 或 AMD-V 虚拟化扩展
  • ✅ 64 位处理器
  • ✅ 多核推荐 (4 核+)

检测 CPU 虚拟化支持:

bash 复制代码
# Intel CPU 检测
egrep -c '(vmx|svm)' /proc/cpuinfo
# 输出 > 0 表示支持

# 查看详细标志
lscpu | grep Virtualization
# 输出:
# Virtualization: Intel VT-x

# 或使用
cat /proc/cpuinfo | grep -E 'vmx|svm'
# vmx = Intel, svm = AMD

BIOS/UEFI 设置:

复制代码
开机进入 BIOS/UEFI 设置:

Intel 平台:
Advanced → CPU Configuration → Intel Virtualization Technology → Enabled

AMD 平台:
Advanced → CPU Configuration → SVM Mode → Enabled

保存并重启 (F10)

内存要求

最低要求:

  • 宿主机:4GB
  • 每个 VM: 512MB-2GB (根据需求)

推荐配置:

复制代码
小型环境 (5-10 个 VM):
- 宿主机内存:16GB
- 每个 VM: 2-4GB

中型环境 (10-50 个 VM):
- 宿主机内存:64-128GB
- 每个 VM: 4-8GB

大型环境 (50+ 个 VM):
- 宿主机内存:256GB+
- 每个 VM: 8-16GB

内存检测命令:

bash 复制代码
# 查看总内存
free -h
# 输出:
#               total        used        free
# Mem:           15G        2.1G         10G

# 查看内存详情
cat /proc/meminfo

# 查看内存插槽
dmidecode -t memory

存储要求

存储类型选择:

类型 速度 成本 推荐场景
NVMe SSD 最快 (3000+ MB/s) 最贵 高性能 VM、数据库
SATA SSD 快 (500 MB/s) 中等 一般应用、开发环境
HDD 慢 (100-150 MB/s) 便宜 冷备份、归档

存储容量规划:

复制代码
单个 VM 存储需求:
- 系统盘:20-50GB (Linux), 50-100GB (Windows)
- 数据盘:根据应用需求
- 快照预留:20-30%

示例:10 个 Linux VM
- 系统盘:10 × 30GB = 300GB
- 数据盘:10 × 50GB = 500GB
- 快照:300GB × 30% = 90GB
- 总计:~900GB

存储检测:

bash 复制代码
# 查看磁盘空间
df -h

# 查看磁盘类型
lsblk -d -o name,rota
# rota=1 表示 HDD, rota=0 表示 SSD

# 查看磁盘性能
hdparm -Tt /dev/sda

# 查看分区
fdisk -l

网络要求

网卡要求:

  • 千兆网卡 (1Gbps) 最低
  • 推荐万兆网卡 (10Gbps) 用于生产
  • 多网卡用于网络隔离

网络检测:

bash 复制代码
# 查看网卡信息
ip addr show
lspci | grep -i ethernet

# 查看网卡速度
ethtool eth0 | grep Speed

# 网络性能测试
iperf3 -c server_ip

宿主机系统选择

推荐 Linux 发行版

1. CentOS/RHEL 8

复制代码
优势:
✅ 企业级稳定性
✅ 长期支持 (10 年)
✅ KVM 优化最好
✅ 文档丰富

适用场景:
- 企业生产环境
- 需要商业支持

版本选择:
- CentOS Stream 8 (滚动更新)
- RHEL 8 (商业支持)

2. Ubuntu 20.04/22.04 LTS

复制代码
优势:
✅ 软件包最新
✅ 社区活跃
✅ 易于使用
✅ 5 年支持

适用场景:
- 开发和测试
- 初创公司
- 个人学习

版本选择:
- Ubuntu Server 20.04 LTS (推荐)
- Ubuntu Server 22.04 LTS (最新)

3. Debian 10/11

复制代码
优势:
✅ 稳定可靠
✅ 轻量级
✅ 完全自由软件

适用场景:
- 高级用户
- 追求纯净系统

系统安装选项

分区建议:

复制代码
/boot/efi     512MB   (UEFI 启动)
/boot         1GB     (内核和引导)
/             50GB    (系统根目录)
/var          50GB    (日志和 VM 镜像)
/home         剩余    (用户数据)
swap          4-8GB   (交换空间)

软件包选择:

bash 复制代码
# 最小化安装 + 虚拟化组
yum groupinstall -y "Virtualization Host"
# 或
apt install -y qemu-kvm libvirt-daemon-system libvirt-clients

KVM 安装与配置

CentOS/RHEL 安装 KVM

步骤 1: 检查虚拟化支持

bash 复制代码
# 确认 CPU 支持
egrep -c '(vmx|svm)' /proc/cpuinfo
# 应该输出 > 0

# 检查 KVM 模块
lsmod | grep kvm
# 如果没有输出,需要加载

步骤 2: 安装 KVM 及相关组件

bash 复制代码
# 安装 KVM 核心组件
sudo yum install -y qemu-kvm libvirt libvirt-python libvirt-client

# 安装管理工具
sudo yum install -y virt-install bridge-utils virt-manager virt-viewer

# 安装额外组件
sudo yum install -y libguestfs-tools guestfs-tools

步骤 3: 加载 KVM 内核模块

bash 复制代码
# Intel CPU
sudo modprobe kvm_intel

# AMD CPU
sudo modprobe kvm_amd

# 验证模块加载
lsmod | grep kvm
# 输出应该包含:
# kvm_intel    或  kvm_amd
# kvm

步骤 4: 启动并启用 libvirt 服务

bash 复制代码
# 启动服务
sudo systemctl start libvirtd

# 设置开机自启
sudo systemctl enable libvirtd

# 检查服务状态
sudo systemctl status libvirtd
# 应该显示 active (running)

步骤 5: 配置用户权限

bash 复制代码
# 将当前用户添加到 libvirt 组
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)

# 验证组成员
groups

# 需要注销并重新登录才能生效

步骤 6: 验证 KVM 安装

bash 复制代码
# 使用 virt-host-validate 验证
virt-host-validate

# 输出应该全部通过:
# QEMU: Checking for hardware assisted virtualization : PASS
# QEMU: Checking for IOMMU support : PASS
# ...

Ubuntu 安装 KVM

步骤 1: 更新系统

bash 复制代码
sudo apt update
sudo apt upgrade -y

步骤 2: 安装 KVM 及相关组件

bash 复制代码
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

步骤 3: 验证安装

bash 复制代码
# 检查 libvirt 服务
sudo systemctl status libvirtd

# 验证 KVM
virsh list --all

管理工具安装

virsh (命令行工具)

安装:

bash 复制代码
# CentOS/RHEL
sudo yum install -y libvirt-client

# Ubuntu/Debian
sudo apt install -y libvirt-clients

基本使用:

bash 复制代码
# 列出所有 VM
virsh list --all

# 查看节点信息
virsh nodeinfo

# 查看 CPU 信息
virsh cpu-stats

# 查看内存信息
virsh freecell

virt-manager (图形界面)

安装:

bash 复制代码
# CentOS/RHEL
sudo yum install -y virt-manager

# Ubuntu/Debian
sudo apt install -y virt-manager

启动:

bash 复制代码
virt-manager

功能:

  • 创建和配置 VM
  • 图形化控制台
  • 存储和网络管理
  • 快照管理

virt-install (命令行创建 VM)

安装:

bash 复制代码
sudo yum install -y virt-install
# 或
sudo apt install -y virtinst

示例:

bash 复制代码
virt-install \
  --name centos7-vm1 \
  --ram 2048 \
  --vcpus 2 \
  --disk path=/var/lib/libvirt/images/centos7-vm1.qcow2,size=20 \
  --os-variant centos7.0 \
  --network bridge=br0,model=virtio \
  --graphics vnc,listen=0.0.0.0 \
  --cdrom /var/lib/libvirt/images/CentOS-7-x86_64-DVD-2009.iso

环境验证

完整验证脚本

bash 复制代码
#!/bin/bash
# kvm-verify.sh

echo "=== KVM 环境验证 ==="
echo

# 1. CPU 虚拟化检查
echo "1. CPU 虚拟化支持检查"
if egrep -q '(vmx|svm)' /proc/cpuinfo; then
    echo "✓ CPU 虚拟化支持:通过"
    lscpu | grep Virtualization
else
    echo "✗ CPU 虚拟化支持:失败"
    exit 1
fi
echo

# 2. KVM 模块检查
echo "2. KVM 内核模块检查"
if lsmod | grep -q kvm_intel; then
    echo "✓ Intel KVM 模块:已加载"
elif lsmod | grep -q kvm_amd; then
    echo "✓ AMD KVM 模块:已加载"
else
    echo "✗ KVM 模块:未加载"
    exit 1
fi
echo

# 3. libvirt 服务检查
echo "3. libvirt 服务状态"
if systemctl is-active --quiet libvirtd; then
    echo "✓ libvirtd 服务:运行中"
else
    echo "✗ libvirtd 服务:未运行"
    exit 1
fi
echo

# 4. 用户权限检查
echo "4. 用户权限检查"
if groups | grep -q libvirt; then
    echo "✓ libvirt 组:已加入"
else
    echo "✗ libvirt 组:未加入"
fi

if groups | grep -q kvm; then
    echo "✓ kvm 组:已加入"
else
    echo "✗ kvm 组:未加入"
fi
echo

# 5. 网络连接检查
echo "5. 网络配置检查"
virsh net-list --all
echo

# 6. 存储池检查
echo "6. 存储池检查"
virsh pool-list --all
echo

# 7. 性能快速测试
echo "7. 创建测试 VM (可选)"
# virsh create test-vm.xml

echo "=== 验证完成 ==="

使用方法:

bash 复制代码
chmod +x kvm-verify.sh
sudo ./kvm-verify.sh

手动验证步骤

验证 1: virsh 连接

bash 复制代码
virsh -c qemu:///system list
# 应该能正常连接并列出 VM (空的)

验证 2: 创建测试网络

bash 复制代码
virsh net-define /tmp/test-net.xml
virsh net-start test-net
virsh net-list --all

验证 3: 查看_capabilities

bash 复制代码
virsh capabilities
# 查看支持的虚拟化特性

常见问题排查

问题 1: CPU 虚拟化未启用

症状:

bash 复制代码
egrep -c '(vmx|svm)' /proc/cpuinfo
# 输出 0

解决方案:

复制代码
1. 重启进入 BIOS/UEFI
2. 找到 Virtualization Technology
3. 设置为 Enabled
4. 保存并退出 (F10)
5. 重启系统

问题 2: KVM 模块加载失败

症状:

bash 复制代码
modprobe kvm_intel
# 报错:FATAL: Module kvm_intel not found

排查步骤:

bash 复制代码
# 1. 检查内核版本
uname -r

# 2. 检查内核模块是否存在
find /lib/modules/$(uname -r) -name "kvm*.ko"

# 3. 重新安装 KVM 模块
sudo yum reinstall -y qemu-kvm
# 或
sudo apt install --reinstall -y qemu-kvm

# 4. 重启系统
sudo reboot

问题 3: libvirtd 服务无法启动

症状:

bash 复制代码
systemctl start libvirtd
# 失败

排查:

bash 复制代码
# 1. 查看错误日志
journalctl -u libvirtd -n 50

# 2. 检查配置文件
sudo vim /etc/libvirt/libvirtd.conf

# 3. 检查权限
sudo ls -la /var/lib/libvirt/

# 4. 重启服务
sudo systemctl restart libvirtd

问题 4: 权限不足

症状:

bash 复制代码
virsh list
# error: failed to connect to the hypervisor

解决方案:

bash 复制代码
# 1. 添加用户到组
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)

# 2. 重启 libvirtd
sudo systemctl restart libvirtd

# 3. 注销并重新登录
# 或重启系统

问题 5: 网络配置问题

症状:

bash 复制代码
virsh net-list --all
# 网络未启动或不存在

解决方案:

bash 复制代码
# 1. 定义默认网络
cat > /tmp/default-net.xml <<EOF
<network>
  <name>default</name>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>
EOF

# 2. 启动网络
virsh net-define /tmp/default-net.xml
virsh net-start default
virsh net-autostart default

# 3. 验证
virsh net-list --all

性能优化建议

BIOS/UEFI 优化

复制代码
启用以下选项:
✓ Intel VT-x / AMD-V
✓ VT-d / AMD-Vi (I/O 虚拟化)
✓ Hyper-Threading (超线程)
✓ C-States (节能状态)
✓ Turbo Boost (睿频)

内核参数优化

bash 复制代码
# 编辑 /etc/sysctl.conf
cat >> /etc/sysctl.conf <<EOF

# KVM 性能优化
kernel.sched_min_granularity_ns = 1000000
kernel.sched_wakeup_granularity_ns = 2000000
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
vm.swappiness = 10
EOF

# 应用配置
sudo sysctl -p

存储优化

bash 复制代码
# 使用 virtio 驱动
--disk bus=virtio

# 使用 cache=none
--disk cache=none

# 使用 discard (SSD)
--disk discard=unmap

网络优化

bash 复制代码
# 使用 virtio 网卡
--network model=virtio

# 使用 SR-IOV (高级)
# 需要硬件支持

总结

安装检查清单

复制代码
□ CPU 虚拟化支持检测
□ BIOS/UEFI 启用虚拟化
□ 选择并安装宿主机系统
□ 安装 KVM 及相关组件
□ 加载 KVM 内核模块
□ 启动 libvirtd 服务
□ 配置用户权限
□ 安装管理工具
□ 验证安装
□ 配置网络
□ 性能优化

下一步学习

完成环境准备后,继续学习:

  1. 第二部分: Linux 虚拟机安装
  2. 第三部分: 网络配置
  3. 第四部分: 安全设置
  4. 第五部分: 快照管理
  5. 第六部分: 模板制作

本文档属于 KVM 虚拟化技术实战系列
对应视频:6-06, 12-12
最后更新:2026 年 3 月

相关推荐
匀泪2 小时前
云原生(mysql组复制、mysql路由)
云原生
AI攻城狮2 天前
OpenFang 给我的一个提醒:AI Agent 真正难的不是自主,而是治理
人工智能·云原生·aigc
Java陈序员3 天前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
AI攻城狮4 天前
OpenClaw 里 TAVILY_API_KEY 明明写在 ~/.bashrc,为什么还是失效?一次完整排查与修复
人工智能·云原生·aigc
阿里云云原生5 天前
零配置部署顶级模型!函数计算一键解锁 Qwen3.5
云原生
AI攻城狮5 天前
Kimi Bot + OpenClaw 完整配置指南:5 步实现本地 AI Agent 集成
人工智能·云原生·aigc
AI攻城狮6 天前
RAG Chunking 为什么这么难?5 大挑战 + 最佳实践指南
人工智能·云原生·aigc
哈里谢顿8 天前
Kubernetes Operator核心概念、实现原理和实战开发
云原生
阿里云云原生8 天前
你的 OpenClaw 真的在受控运行吗?
云原生