libvirt 简介

libvirt 是一套开源的虚拟化管理和 API 工具集,旨在简化虚拟机的创建、管理和监控,它支持多种虚拟化技术(如 KVM、Xen、VMware、VirtualBox 等),提供了统一的接口,让用户可以通过命令行工具(如 virsh)、图形界面(如 virt-manager)或编程语言(如 Python、C)来操作虚拟机,对于需要批量管理虚拟化的场景,libvirt 凭借其稳定性和灵活性,成为 Linux 环境下虚拟化管理的首选工具之一。
环境准备
在开始创建虚拟机前,需确保宿主机满足以下条件:
- 虚拟化支持:CPU 需开启 VT-x(Intel)或 AMD-V(AMD)虚拟化技术,并在 BIOS 中启用,可通过命令
grep -E 'vmx|svm' /proc/cpuinfo检查是否支持。 - 安装必要软件包:以 Ubuntu 为例,执行
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager;CentOS 系统可通过sudo yum install qemu-kvm libvirt virt-install bridge-utils安装,qemu 提供虚拟化核心功能,libvirt-daemon 是守护进程,bridge-utils 用于网络配置。 - 用户权限:将当前用户添加到 libvirt 用户组,避免每次操作都需要 sudo:
sudo usermod -aG libvirt $USER,之后需重新登录生效。
创建虚拟机步骤
创建虚拟机主要通过 XML 配置文件和 virt-install 命令完成,以下是详细步骤:
定义虚拟机 XML 配置
libvirt 通过 XML 文件描述虚拟机的硬件配置(如内存、CPU、磁盘、网络等),以下是一个基础示例(保存为 vm_config.xml):

<domain type='kvm'>
<name>ubuntu-vm</name>
<memory unit='MiB'>2048</memory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64'>hvm</type>
<boot dev='cdrom'/>
</os>
<devices>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/path/to/ubuntu.iso'/>
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/ubuntu-vm.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
<graphics type='vnc' port='-1' autoport='yes'/>
</devices>
</domain>
关键参数说明:
<name>:虚拟机名称;<memory>和<vcpu>:分配内存(单位 MiB)和 CPU 核心数;<disk>:磁盘配置,type='file'表示使用文件作为磁盘,device='cdrom'为光驱,device='disk'为系统盘,type='qcow2'支持快照;<interface>:网络配置,network='default'使用 libvirt 默认的 NAT 网络;<graphics>:VNC 图形接口,用于远程连接虚拟机桌面。
使用 virt-install 安装虚拟机
通过 virt-install 命令结合 XML 文件或直接参数创建虚拟机,以下是常用方式:
基于 XML 文件创建
sudo virt-install --config vm_config.xml --import
若需交互式安装(如从 ISO 启动),可添加 --cdrom /path/to/ubuntu.iso 参数。
直接通过参数创建
sudo virt-install \ --name ubuntu-vm \ --memory 2048 \ --vcpu 2 \ --disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=20,bus=virtio \ --cdrom /path/to/ubuntu.iso \ --network network=default \ --graphics vnc \ --os-variant ubuntu22.04
参数说明:--disk size=20 表示磁盘大小 20GB,--os-variant 可指定操作系统类型(如 ubuntu22.04、centos8),libvirt 会自动优化默认配置。

虚拟机管理
创建完成后,可通过 virsh 命令管理虚拟机:
- 查看虚拟机列表:
virsh list --all(--all包含已关闭的虚拟机); - 启动虚拟机:
virsh start ubuntu-vm; - 关闭虚拟机:
virsh shutdown ubuntu-vm(优雅关机); - 强制关机:
virsh destroy ubuntu-vm; - 进入控制台:
virsh console ubuntu-vm(需虚拟机安装 serial 终端); - 编辑配置:
virsh edit ubuntu-vm(修改 XML 后需重启生效); - 删除虚拟机:
virsh undefine ubuntu-vm(会删除配置但保留磁盘文件,需手动清理)。
注意事项
- 磁盘权限:磁盘文件路径需确保 libvirt 用户有读写权限(如
/var/lib/libvirt/images/目录默认权限正确); - 网络配置:默认 NAT 网络可满足基本需求,若需虚拟机与外部网络互通,可配置桥接网络(bridge);
- 快照管理:qcow2 格式支持快照,可通过
virsh snapshot-create创建,便于备份和恢复; - 性能优化:磁盘建议使用 virtio 接口,CPU 可根据负载调整模式(如
--cpu host-model以匹配宿主机 CPU 特性)。
通过以上步骤,即可利用 libvirt 高效完成虚拟机的创建与管理,适用于开发测试、服务器虚拟化等多种场景。

















