CentOS 7/8 KVM 实战部署:3步完成基础环境与首个虚拟机创建

📅 2026/7/6 12:21:56 👁️ 阅读次数 📝 编程学习
CentOS 7/8 KVM 实战部署:3步完成基础环境与首个虚拟机创建

CentOS 7/8 KVM 实战部署:3步完成基础环境与首个虚拟机创建

虚拟化技术已成为现代IT基础设施的核心组件,而KVM(Kernel-based Virtual Machine)作为Linux生态中的主流方案,凭借其高性能、低开销和原生集成优势,在企业和开发者环境中广泛应用。本文将带您快速掌握在CentOS 7/8系统上部署KVM虚拟化环境的核心技能,通过三个关键步骤实现从零到生产级虚拟机的创建。

1. 环境准备与KVM安装

在开始部署前,请确保您的CentOS系统满足以下硬件要求:

  • CPU支持虚拟化扩展:执行egrep '(vmx|svm)' /proc/cpuinfo应有输出
  • 内存建议:主机至少4GB RAM(运行虚拟机需额外分配)
  • 存储空间:建议系统分区剩余20GB以上

1.1 安装KVM核心组件

通过YUM/DNF工具组安装虚拟化套件:

# CentOS 7 sudo yum install -y qemu-kvm libvirt virt-install bridge-utils # CentOS 8 sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer virt-manager

关键组件说明

  • qemu-kvm:硬件模拟器与KVM接口
  • libvirt:虚拟化管理守护进程
  • virt-install:命令行虚拟机创建工具
  • bridge-utils:网络桥接配置工具

1.2 启动并验证服务

启用libvirtd服务并检查KVM模块加载状态:

sudo systemctl enable --now libvirtd lsmod | grep kvm # 应显示kvm_intel/kvm_amd和kvm模块

1.3 网络配置(桥接模式)

创建桥接网络实现虚拟机直接接入物理网络:

# 创建桥接配置文件 cat <<EOF | sudo tee /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0 EOF # 修改原网卡配置(示例为eth0) sudo sed -i 's/BOOTPROTO=.*/BOOTPROTO=none/' /etc/sysconfig/network-scripts/ifcfg-eth0 echo "BRIDGE=br0" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eth0 # 重启网络服务 sudo systemctl restart network

2. 创建首个虚拟机

2.1 准备磁盘镜像

使用qemu-img创建动态分配的qcow2格式镜像:

qemu-img create -f qcow2 /var/lib/libvirt/images/centos-vm1.qcow2 20G

参数解析

  • -f qcow2:指定镜像格式(支持快照、压缩)
  • 20G:虚拟磁盘最大容量(实际占用随使用增长)

2.2 通过virt-install快速部署

以下命令实现自动化安装CentOS 8虚拟机:

virt-install \ --name centos-vm1 \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/centos-vm1.qcow2,size=20 \ --os-type linux \ --os-variant centos8 \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 \ --console pty,target_type=serial \ --location 'http://mirror.centos.org/centos/8/BaseOS/x86_64/os/' \ --extra-args 'console=ttyS0,115200n8 serial'

关键选项说明

参数作用
--location指定安装源URL
--extra-args向安装内核传递参数
--graphics vnc启用VNC远程控制

2.3 连接虚拟机控制台

通过virsh命令管理虚拟机状态:

virsh list --all # 查看虚拟机状态 virsh console centos-vm1 # 连接串行控制台

3. 虚拟机高级配置

3.1 网络连通性测试

在虚拟机内部验证网络配置:

# 获取IP地址(DHCP) ip addr show eth0 # 测试外网连通性 ping -c 4 8.8.8.8 # 验证DNS解析 nslookup example.com

3.2 性能优化配置

编辑虚拟机XML定义文件进行高级调整:

virsh edit centos-vm1

推荐优化项

<cpu mode='host-passthrough' check='none'/> <memoryBacking> <hugepages/> </memoryBacking> <devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none' io='native'/> </disk> <interface type='bridge'> <model type='virtio'/> <driver name='vhost' queues='4'/> </interface> </devices>

3.3 自动化管理脚本

创建虚拟机启停管理脚本vm-manager.sh

#!/bin/bash VM_NAME="centos-vm1" case "$1" in start) virsh start $VM_NAME echo "Starting $VM_NAME..." ;; stop) virsh shutdown $VM_NAME echo "Stopping $VM_NAME..." ;; status) virsh dominfo $VM_NAME ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac

4. 生产环境增强实践

4.1 存储池配置

创建基于目录的存储池提升管理效率:

# 定义存储池 virsh pool-define-as default dir - - - - "/var/lib/libvirt/images" virsh pool-start default virsh pool-autostart default # 验证存储池 virsh pool-list --all

4.2 快照管理

利用qcow2特性实现系统快照:

# 创建关机状态快照 virsh snapshot-create-as --domain centos-vm1 --name "baseline" --description "Clean install" # 查看快照列表 virsh snapshot-list centos-vm1 # 恢复快照 virsh snapshot-revert centos-vm1 --snapshotname "baseline"

4.3 资源监控

使用virt-top实时监控虚拟机资源占用:

virt-top -c qemu:///system

输出示例

VIRTUAL MACHINE CPU% MEM% MEM(MB) TIME(s) centos-vm1 12.5 45.3 926.4 12:34

通过本文的实践,您已掌握KVM环境部署的核心技能。在实际生产环境中,建议结合具体需求进一步探索虚拟网络定制、存储优化和集群管理等高级特性。KVM的灵活性与Linux生态的深度整合,使其成为构建现代化虚拟化平台的理想选择。