前言

我这里是使用的是CentOS 7 ,由于linux发行版本问题,可能有出入,请多包涵


KVM 简介

KVM(Kernel-based Virtual Machine)是基于 Linux 内核的开源虚拟化解决方案,特点如下:

  • 内核集成:直接利用 Linux 内核作为 Hypervisor,无需额外内核。
  • 硬件支持:依赖 CPU 虚拟化扩展(Intel VT-x/AMD-V),性能接近物理机。
  • 多平台兼容:支持 Windows、Linux 等多种操作系统作为虚拟机。
  • 管理灵活:可通过命令行(virsh)或图形工具(virt-manager)管理。

CentOS7 搭建 KVM 步骤

1. 环境准备

1
2
3
4
5
6
7
8
9
10
11
12
# 检查 CPU 是否支持虚拟化(输出应 ≥1)
egrep -c '(vmx|svm)' /proc/cpuinfo

# 安装软件包组
yum groupinstall "Virtualization Host" -y
yum install qemu-kvm libvirt virt-install bridge-utils -y

# 启动服务
systemctl start libvirtd && systemctl enable libvirtd

# 添加用户到 libvirt 组
usermod -aG libvirt $USER

创建虚拟机

1
2
3
4
5
6
7
8
9
10
11
# 示例:创建一个 2CPU/2GB 内存/20GB 磁盘的虚拟机
virt-install \
--name=centos7-vm \
--vcpus=2 \
--memory=2048 \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=20,format=qcow2 \
--cdrom=/path/to/CentOS-7-x86_64-Minimal.iso \
--os-type=linux \
--os-variant=centos7 \
--network network=default \
--graphics vnc,port=5901

连接虚拟机

  • 使用 VNC 客户端连接 宿主机IP:5901
  • 或通过 virsh console <VM_NAME> 进入控制台

常用 KVM 命令

虚拟机操作

  1. 基本管理
    1
    2
    3
    4
    5
    virsh list --all        # 列出所有虚拟机
    virsh start <VM_NAME> # 启动虚拟机
    virsh shutdown <VM_NAME> # 正常关机
    virsh destroy <VM_NAME> # 强制断电
    virsh undefine <VM_NAME> # 删除配置
  2. 配置编辑
    1
    2
    virsh edit <VM_NAME>    # 修改虚拟机 XML 配置文件
    virsh dumpxml <VM_NAME> > vm.xml # 导出配置

存储管理

  1. 创建虚拟磁盘
    1
    qemu-img create -f qcow2 /data/vm_disk.img 50G
  2. 存储池操作
    1
    2
    virsh pool-define-as mypool dir --target /data/kvm_pools  # 定义存储池
    virsh pool-start mypool # 激活存储池

网络管理

  1. 查看网络
    1
    2
    virsh net-list --all      # 列出所有虚拟网络
    virsh net-info default # 查看默认网络信息
  2. 创建桥接网络
    1
    2
    # 编辑网卡配置文件(如 br0)
    nmcli connection add type bridge con-name br0 ifname br0

四、核心总结

  1. KVM 优势

    • 开源免费,性能接近物理机
    • 与 Linux 生态深度集成
    • 支持动态迁移、快照等高级功能
  2. 适用场景

    • 企业服务器虚拟化
    • 开发/测试环境隔离
    • 云平台底层虚拟化(如 OpenStack)
  3. 关键注意点
    - 确保 CPU 支持虚拟化并开启 BIOS 设置
    - 使用 qcow2 格式磁盘节省空间
    - 优先配置桥接网络实现外网访问