Skip to main content

KVM 虚拟化(libvirt / virsh)常用命令清单

下面按生产运维常用频率,系统性整理 KVM 虚拟化(libvirt / virsh)常用命令清单。内容以 Linux 服务器环境(Ubuntu / CentOS / Rocky) 为基准,适合你这种长期做虚拟化与运维的场景


一、基础环境与服务状态

1️⃣ 检查是否支持虚拟化

egrep -c '(vmx|svm)' /proc/cpuinfo

返回 ≥1 即支持 VT-x / AMD-V

lsmod | grep kvm

2️⃣ libvirt 服务管理

systemctl status libvirtd
systemctl start libvirtd
systemctl enable libvirtd
systemctl restart libvirtd

二、虚拟机(Domain)管理 —— 核心命令

1️⃣ 查看虚拟机列表

virsh list            # 运行中的 VM
virsh list --all      # 所有 VM

2️⃣ 启动 / 关闭 / 重启

virsh start vm1
virsh shutdown vm1    # 正常关机
virsh reboot vm1
virsh destroy vm1     # 强制断电(慎用)

3️⃣ 自动启动控制

virsh autostart vm1
virsh autostart --disable vm1

4️⃣ 删除虚拟机

virsh undefine vm1

⚠️ 仅删除定义,不删除磁盘

删除磁盘:

rm -f /var/lib/libvirt/images/vm1.qcow2

三、虚拟机配置与信息查看

1️⃣ 查看详细信息

virsh dominfo vm1

2️⃣ 查看 XML 配置(非常关键)

virsh dumpxml vm1

编辑配置:

virsh edit vm1

3️⃣ 查看 CPU / 内存

virsh vcpuinfo vm1
virsh vcpucount vm1
virsh dommemstat vm1

四、磁盘管理(生产常用)

1️⃣ 查看磁盘挂载

virsh domblklist vm1

2️⃣ 在线扩容磁盘(qcow2)

qemu-img resize vm1.qcow2 +50G

让 VM 识别:

virsh blockresize vm1 vda 100G

3️⃣ 创建磁盘

qemu-img create -f qcow2 vm2.qcow2 50G

查看磁盘信息:

qemu-img info vm1.qcow2

五、快照管理(qcow2)

1️⃣ 创建快照

virsh snapshot-create-as vm1 snap1 "before update"

2️⃣ 查看快照

virsh snapshot-list vm1

3️⃣ 回滚快照

virsh snapshot-revert vm1 snap1

4️⃣ 删除快照

virsh snapshot-delete vm1 snap1

六、网络管理(libvirt)

1️⃣ 查看网络

virsh net-list --all

2️⃣ 启动 / 停止网络

virsh net-start default
virsh net-autostart default

3️⃣ 查看网络配置

virsh net-dumpxml default

七、控制台与远程访问

1️⃣ 控制台登录

virsh console vm1

退出:

Ctrl + ]

2️⃣ VNC/SPICE 信息

virsh vncdisplay vm1
virsh domdisplay vm1

八、资源热调整(在线)

1️⃣ CPU 热调整

virsh setvcpus vm1 8 --live

2️⃣ 内存热调整

virsh setmem vm1 16G --live

永久生效:

virsh setmem vm1 16G --config

九、宿主机层面(排障必会)

1️⃣ 查看 qemu 进程

ps -ef | grep qemu

2️⃣ 查看 VM 日志

/var/log/libvirt/qemu/vm1.log

3️⃣ 查看宿主资源

virsh nodeinfo
free -h
lsblk

十、批量与自动化常用

1️⃣ 批量关机

for vm in $(virsh list --name); do
    virsh shutdown $vm
done

2️⃣ 批量启动

virsh list --all | awk '/shut off/ {print $2}' | xargs -n1 virsh start

十一、virt-install(创建虚拟机)

virt-install \
  --name vm1 \
  --memory 8192 \
  --vcpus 4 \
  --disk path=/var/lib/libvirt/images/vm1.qcow2,size=50 \
  --os-variant ubuntu20.04 \
  --network bridge=br0 \
  --graphics vnc \
  --cdrom ubuntu-20.04.iso

十二、运维级建议(给你这种场景)

  • 日常必会 10 个命令

    virsh list
    virsh start / shutdown / destroy
    virsh dumpxml / edit
    virsh domblklist
    qemu-img info / resize
    virsh snapshot-*
    virsh console
    
  • 生产建议

    • 统一使用 qcow2 + snapshot

    • VM XML 做版本备份

    • 禁止直接 kill qemu

    • 网络桥接优先 br0


如果你需要,我可以进一步给你:

  • KVM 运维速查表(Markdown / PDF)

  • Hyper-V vs KVM 运维命令对照表

  • 高性能 KVM 调优清单(NUMA / hugepage / IO)

  • libvirt + Ansible 批量管理模板

你直接告诉我下一步想深入哪一块即可。