【无标题】

KVM 命令行虚拟机管理 核心总结

基于 libvirt 的 virsh 工具管理KVM虚拟机,包含虚拟机生命周期、配置、快照、磁盘、创建虚拟机、网络存储、删除、开机自启。

一、基础生命周期操作(virsh)

命令 功能
virsh list 查看运行中虚拟机
virsh list --all 查看全部(含关机)虚拟机
virsh start 虚拟机名 启动虚拟机
virsh shutdown 虚拟机名 优雅关机(ACPI,优先使用)
virsh destroy 虚拟机名 强制断电,虚拟机卡死时使用,相当于拔电源
virsh reboot 虚拟机名 重启虚拟机
virsh suspend 挂起/暂停虚拟机,内存数据落磁盘
virsh resume 恢复挂起的虚拟机

命令详解:

  • virsh list:仅显示当前处于运行状态的虚拟机,适合快速确认哪些虚拟机在线。
  • virsh list --all:显示所有虚拟机,包括已关机(shut off)状态的,便于掌握整体资源分布。
  • virsh start 虚拟机名:启动一台已定义但处于关机状态的虚拟机,相当于给虚拟机通电开机。
  • virsh shutdown 虚拟机名:向虚拟机发送 ACPI 关机信号,让操作系统优雅退出,优先使用,避免数据损坏。
  • virsh destroy 虚拟机名:直接强制断电,相当于拔掉电源线。仅当虚拟机卡死、无法响应 shutdown 时使用,否则可能造成文件系统损坏。
  • virsh reboot 虚拟机名:重启虚拟机,相当于先关机再开机。
  • virsh suspend:挂起虚拟机,将内存状态保存到磁盘,暂停 CPU 运行,适合临时腾出宿主机资源。
  • virsh resume:恢复被挂起的虚拟机,从磁盘加载内存状态继续运行。

信息查询:

  • virsh dominfo 虚拟机名:查看虚拟机基本信息,包括内存、CPU、状态、自动启动配置等。
  • virsh domblklist 虚拟机名:列出虚拟机挂载的磁盘设备,确认磁盘路径与格式。
  • virsh domiflist 虚拟机名:查看虚拟机网卡信息,包括 MAC 地址、网络类型与桥接关系。
  • virsh vncdisplay 虚拟机名:查看虚拟机当前 VNC 端口号,用于远程图形界面连接。
    交互模式:在终端输入 virsh 即可进入交互式命令行,此时可直接输入上述命令而无需重复输入 virsh 前缀,输入 quit 退出交互模式;virt-manager 可调出图形化管理界面,适合不熟悉命令行的用户进行可视化操作。

二、虚拟机配置导入导出(备份配置重点)

  1. virsh dumpxml 虚拟机名 > /root/xxx.xml:导出 xml 配置备份,将虚拟机的完整硬件配置(CPU、内存、磁盘、网卡等)保存为 xml 文件,是备份虚拟机配置的核心手段。
  2. virsh undefine 虚拟机名:注销虚拟机,只删除 libvirt 的 xml 记录,不会删除 qcow2 磁盘镜像,虚拟机从 libvirt 管理列表中移除,但磁盘数据仍保留在磁盘上。
  3. virsh define /root/xxx.xml:从备份的 xml 文件重新注册恢复虚拟机,相当于把之前注销的虚拟机重新纳入 libvirt 管理。
  4. virsh edit 虚拟机名:直接编辑虚拟机 xml 配置文件,可修改内存、CPU、磁盘、网卡等参数,修改后需重启虚拟机生效。

⚠️重点:undefine不会删磁盘,磁盘文件仍然保留。

三、快照管理

  • virsh snapshot-create-as 虚拟机名 快照名 "描述":为虚拟机创建快照,记录当前磁盘与内存状态,可用于快速回滚。
  • virsh snapshot-list 虚拟机名:列出该虚拟机的所有快照,显示快照名称、创建时间与状态。
  • virsh snapshot-revert 虚拟机名 --snapshotname 快照名:将虚拟机恢复到指定快照时的状态,恢复前建议先关闭虚拟机,避免数据不一致。
  • virsh snapshot-delete 虚拟机名 --snapshotname 快照名:删除指定快照,释放磁盘空间,删除后无法再恢复到该快照点。

四、qemu‑img磁盘镜像管理

⚠️磁盘操作建议虚拟机关闭,避免镜像损坏

  1. qemu‑img create -f qcow2 路径/xxx.qcow2 20G 创建qcow2格式磁盘
  2. qemu‑img info 镜像路径 查看磁盘镜像详细信息

五、virt‑install 命令行新建虚拟机

关键参数:

  • --name虚拟机名称;--memory内存MiB;--vcpusCPU核心数
  • --disk path=磁盘镜像路径
  • --locationISO安装镜像路径
  • --network network=default使用KVM默认NAT网络
  • --noautoconsole不自动弹出控制台
  • --vnc --vnclisten=0.0.0.0 --vncport=5903开启VNC远程访问

示例:

bash 复制代码
virt-install --name vm2 \
--memory 4096 --vcpus 2 \
--disk path=/disk/vm2.qcow2 \
--location /iso/CentOS‑7‑x86_64‑Minimal‑1810.iso \
--network network=default \
--noautoconsole

VNC访问:宿主机IP:端口;监听0.0.0.0要放行防火墙,外部才能连接。

六、虚拟网络、存储池

虚拟网络

  • virsh net‑list --all查看全部虚拟网络
  • virsh net‑start default启动默认NAT网络
  • virsh net‑autostart default设置default网络开机自启
  • virsh net‑dumpxml default导出网络xml配置

存储池

  • virsh pool‑list --all查看存储池
  • virsh vol‑list default查看存储池内部磁盘镜像

KVM默认存储池路径:/var/lib/libvirt/images/

七、删除虚拟机流程

  1. 先关闭虚拟机(shutdown/destroy)
  2. 可选:删除虚拟机快照
  3. 两种删除方式
    • virsh undefine vm3:仅注销xml配置,磁盘镜像保留
    • virsh undefine vm3 --remove‑all‑storage:注销xml,同时自动删除关联磁盘
  4. 手动删磁盘:rm -f /var/lib/libvirt/images/vm3.qcow2

注意:运行状态虚拟机不能执行undefine。

八、虚拟机开机自启

  • virsh autostart 虚拟机名:开启宿主机开机自启虚拟机
  • virsh autostart --disable 虚拟机名:关闭开机自启
  • virsh list --all --autostart:查看所有配置自启的虚拟机,必须带--all,关机虚拟机才会显示
  • virsh dominfo 虚拟机名:查看单台虚拟机自启状态

九、重要易错点汇总

  1. undefine只删xml配置,默认不会删除qcow2磁盘镜像。
  2. qemu‑img操作磁盘镜像,务必关闭虚拟机,防止镜像损坏。
  3. VNC监听0.0.0.0,防火墙需要放行对应端口,外部才能连接。
  4. virsh list --autostart不加--all看不到关机但开启自启的虚拟机。
  5. 虚拟机运行状态不能执行undefine注销。
  6. 备份优先dumpxml导出xml配置,磁盘镜像单独备份。
相关推荐
xiaoyunxuexibiji1 小时前
供应商绩效评价体系如何建立?从评价指标到自动化考核
运维·人工智能·自动化
Z21-X1 小时前
云原生运维学习笔记:从云计算概念到服务器硬件的入门之旅
运维·笔记·学习·云原生
虚无的纽扣1 小时前
【Linux】线程(下):怎么创建、终止与分离一个线程
linux·运维·服务器
叼烟扛炮1 小时前
Linux 学习笔记(七):软件安装与 Vim 编辑器极速入门
linux·学习·编辑器
小米渣的逆袭1 小时前
Windows 键盘触发蓝屏获取内存转储(Dump)操作文档
windows
墨神谕1 小时前
Docker 数据卷(Volume)详解:Dockerfile 声明、Docker Compose 挂载宿主机目录及持久化实战
运维·docker·容器
金色熊族1 小时前
在Qt中使用asan检测内存泄漏(二)--检查依赖库的内存使用
linux·qt·asan
叼烟扛炮1 小时前
Linux 学习笔记(十六):进程的调度与优先级——谁先抢到 CPU?
linux·笔记·学习
幽灵诶1 小时前
学习Linux
linux·学习