使用 virsh 建立虚拟机的完整指南
虚拟化技术是现代数据中心和开发环境的核心组成部分,而 libvirt 提供了一套开源的工具集,用于管理虚拟化平台,virsh 是基于 libvirt 的命令行工具,广泛用于 KVM、Xen、QEMU 等虚拟化环境中,本文将详细介绍如何使用 virsh 命令行工具建立虚拟机,涵盖环境准备、镜像创建、虚拟机配置及启动等关键步骤,帮助用户高效完成虚拟机的部署与管理。

环境准备与依赖安装
在开始使用 virsh 建立虚拟机之前,需确保系统满足基本要求并安装必要的依赖组件,以 Linux 系统为例(以 Ubuntu 为例),执行以下命令安装 KVM、QEMU 及 libvirt 相关工具:
sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst
安装完成后,验证当前用户是否已加入 libvirt 用户组,以确保具有操作权限:
sudo usermod -aG libvirt $USER newgrp libvirt # 刷新用户组权限
通过以下命令检查 libvirt 服务状态及 KVM 模块是否加载成功:
sudo systemctl status libvirtd lsmod | grep kvm
若服务未启动,使用 sudo systemctl start libvirtd 启动服务,并设置为开机自启。
创建虚拟机磁盘镜像
虚拟机磁盘是存储操作系统及数据的载体,virsh 支持多种磁盘格式,如 qcow2、raw 等,qcow2 格式支持动态扩容和快照功能,推荐使用。
使用 qemu-img 命令创建 20GB 的 qcow2 格式磁盘镜像:
qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-vm.qcow2 20G
若需预分配磁盘空间(避免动态扩容性能损耗),可添加 -o preallocation=full 参数。

定义虚拟机配置文件
virsh 支持通过 XML 配置文件定义虚拟机的硬件参数,如 CPU、内存、磁盘、网络等,以下是一个典型的虚拟机配置示例(vm-config.xml):
<domain type='kvm'>
<name>ubuntu-vm</name>
<memory unit='GiB'>2</memory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<devices>
<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'>
<mac address='52:54:00:00:00:01'/>
<source network='default'/>
<model type='virtio'/>
</interface>
<graphics type='vnc' port='5900' autoport='yes'/>
</devices>
</domain>
关键参数说明:
<memory>:分配内存大小,支持GiB、MiB等单位。<vcpu>:虚拟 CPU 核心数。<disk>:磁盘设备,source指定镜像路径,target指定设备名(如vda)。<interface>:网络配置,network='default'使用 NAT 模式,桥接模式需替换为bridge='br0'。<graphics>:VNC 图形界面配置,用于远程连接。
通过 virsh 创建与启动虚拟机
定义虚拟机
使用 virsh define 命令加载 XML 配置文件并创建虚拟机:
virsh define vm-config.xml
安装操作系统
虚拟机创建后需安装操作系统,可通过以下方式之一完成:
-
本地 ISO 安装:将 ISO 镜像文件附加到虚拟机,并设置启动顺序:
virsh attach-disk ubuntu-vm /path/to/ubuntu.iso hda --type cdrom --mode readonly virsh change-media ubuntu-vm hda --eject --update virsh change-media ubuntu-vm hda --insert /path/to/ubuntu.iso
-
PXE 网络安装:配置 TFTP 服务器和 DHCP,通过
pxe方式启动虚拟机。
启动虚拟机
执行以下命令启动虚拟机:

virsh start ubuntu-vm
查看虚拟机状态
使用 virsh list 查看运行中的虚拟机,virsh dominfo ubuntu-vm 查看详细信息:
virsh list --all
虚拟机管理与维护
常用管理命令
| 命令 | 功能描述 |
|---|---|
virsh shutdown VM |
关闭虚拟机(需支持 ACPI) |
virsh reboot VM |
重启虚拟机 |
virsh destroy VM |
强制关闭虚拟机(非安全关闭) |
virsh undefine VM |
删除虚拟机配置(不删除磁盘) |
virsh suspend VM |
暂停虚拟机 |
virsh resume VM |
恢复虚拟机 |
磁盘管理与快照
-
扩容磁盘:
qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G # 扩容 10GB virsh attach-disk ubuntu-vm --source /dev/sdb --target vdb --type disk # 添加新磁盘
-
创建快照:
virsh snapshot-create-as ubuntu-vm snap1 --description "Initial snapshot"
常见问题与解决方案
- 权限错误:确保用户属于
libvirt和kvm组,或使用sudo执行命令。 - 网络不通:检查虚拟机网络模式(NAT/桥接),确认防火墙规则是否拦截流量。
- 磁盘挂载失败:验证 XML 配置中的磁盘路径及格式是否正确,使用
virsh attach-disk重新附加磁盘。
通过 virsh 命令行工具建立虚拟机是 Linux 环境下高效管理虚拟化的方式,本文从环境准备、磁盘创建、XML 配置到虚拟机启动与维护,系统介绍了完整流程,掌握 virsh 的核心命令与参数,能够灵活应对虚拟化部署中的各类需求,为运维和开发工作提供强大支持,结合自动化脚本(如 Ansible),virsh 可进一步实现虚拟机的批量管理,显著提升运维效率。



















