# KVM 虚拟化（libvirt / virsh）常用命令清单

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

---

## 一、基础环境与服务状态

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

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

```

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

```bash
lsmod | grep kvm

```

---

### 2️⃣ libvirt 服务管理

```bash
systemctl status libvirtd
systemctl start libvirtd
systemctl enable libvirtd
systemctl restart libvirtd

```

---

## 二、虚拟机（Domain）管理 —— 核心命令

### 1️⃣ 查看虚拟机列表

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

```

---

### 2️⃣ 启动 / 关闭 / 重启

```bash
virsh start vm1
virsh shutdown vm1    # 正常关机
virsh reboot vm1
virsh destroy vm1     # 强制断电（慎用）

```

---

### 3️⃣ 自动启动控制

```bash
virsh autostart vm1
virsh autostart --disable vm1

```

---

### 4️⃣ 删除虚拟机

```bash
virsh undefine vm1

```

⚠️ **仅删除定义，不删除磁盘**

删除磁盘：

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

```

---

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

### 1️⃣ 查看详细信息

```bash
virsh dominfo vm1

```

---

### 2️⃣ 查看 XML 配置（非常关键）

```bash
virsh dumpxml vm1

```

编辑配置：

```bash
virsh edit vm1

```

---

### 3️⃣ 查看 CPU / 内存

```bash
virsh vcpuinfo vm1
virsh vcpucount vm1
virsh dommemstat vm1

```

---

## 四、磁盘管理（生产常用）

### 1️⃣ 查看磁盘挂载

```bash
virsh domblklist vm1

```

---

### 2️⃣ 在线扩容磁盘（qcow2）

```bash
qemu-img resize vm1.qcow2 +50G

```

让 VM 识别：

```bash
virsh blockresize vm1 vda 100G

```

---

### 3️⃣ 创建磁盘

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

```

查看磁盘信息：

```bash
qemu-img info vm1.qcow2

```

---

## 五、快照管理（qcow2）

### 1️⃣ 创建快照

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

```

---

### 2️⃣ 查看快照

```bash
virsh snapshot-list vm1

```

---

### 3️⃣ 回滚快照

```bash
virsh snapshot-revert vm1 snap1

```

---

### 4️⃣ 删除快照

```bash
virsh snapshot-delete vm1 snap1

```

---

## 六、网络管理（libvirt）

### 1️⃣ 查看网络

```bash
virsh net-list --all

```

---

### 2️⃣ 启动 / 停止网络

```bash
virsh net-start default
virsh net-autostart default

```

---

### 3️⃣ 查看网络配置

```bash
virsh net-dumpxml default

```

---

## 七、控制台与远程访问

### 1️⃣ 控制台登录

```bash
virsh console vm1

```

退出：

```
Ctrl + ]

```

---

### 2️⃣ VNC/SPICE 信息

```bash
virsh vncdisplay vm1
virsh domdisplay vm1

```

---

## 八、资源热调整（在线）

### 1️⃣ CPU 热调整

```bash
virsh setvcpus vm1 8 --live

```

---

### 2️⃣ 内存热调整

```bash
virsh setmem vm1 16G --live

```

永久生效：

```bash
virsh setmem vm1 16G --config

```

---

## 九、宿主机层面（排障必会）

### 1️⃣ 查看 qemu 进程

```bash
ps -ef | grep qemu

```

---

### 2️⃣ 查看 VM 日志

```bash
/var/log/libvirt/qemu/vm1.log

```

---

### 3️⃣ 查看宿主资源

```bash
virsh nodeinfo
free -h
lsblk

```

---

## 十、批量与自动化常用

### 1️⃣ 批量关机

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

```

---

### 2️⃣ 批量启动

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

```

---

## 十一、`virt-install`（创建虚拟机）

```bash
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 批量管理模板**

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