virsh怎么命令行快速启动、正常关机和强制断电虚拟机

老墨同学_9325

老墨同学_9325

2026-11-06

933人浏览

原创

virsh start需先用virsh define定义虚拟机,否则报“Domain not found”;shutdown依赖客户机acpid服务;destroy是强制断电;autostart需手动禁用防宿主机重启后自动启动。

virsh怎么命令行快速启动、正常关机和强制断电虚拟机

启动虚拟机用 virsh start,但必须先确保已定义

没被 libvirt “认识”的虚拟机,virsh start 会直接报错 error: Domain not found。这通常是因为只用 qemu-kvm 命令直接启过虚拟机,没走 virsh define 或 virt-install 流程。

实操建议:

  • 检查是否已定义:virsh list --all 中能看到该虚拟机名称(哪怕状态是 shutoff)
  • 如果完全没出现,得先导入配置:virsh define /path/to/vm.xml
  • 启动时加 --console 可立即接入串口,适合调试启动卡住问题:virsh start vm-name --console
  • 启动后不会自动连控制台,要手动进需再执行 virsh console vm-name

virsh shutdown 不生效?大概率缺 acpid 或未响应 ACPI

virsh shutdown 发的是标准 ACPI 信号,不是“喊一声就关”,它依赖虚拟机内部的 acpid 服务监听并执行关机流程。CentOS/RHEL 默认装了,但 Ubuntu 22.04+、Alpine、或精简镜像常默认不带。

验证与补救:

  • 登录虚拟机检查:systemctl is-active acpid,若返回 inactive,需安装并启用:sudo apt install acpid && sudo systemctl enable --now acpid(Debian/Ubuntu)
  • 临时测试是否通路:在客户机内运行 sudo systemctl mask sleep.target 后再试 virsh shutdown,可排除 systemd suspend 干扰
  • 别用 shutdown -h now 替代 —— 这是本地命令,virsh shutdown 不会触发它

强制断电只能用 virsh destroy,virsh reboot 不是“重启”而是“重置”

virsh destroy 是唯一真正等效于拔电源的操作:立刻杀掉对应 QEMU 进程,不给客户机任何保存机会。但它不是“万能备用方案”——比如虚拟机卡死在 kernel panic、I/O hang 或 virtio 驱动异常时,destroy 也可能卡住几秒甚至失败(此时需查 ps aux | grep qemu 手动 kill -9)。

ChatSonic
ChatSonic

ChatSonic是一款AI工具,WriteSonic出品的ChatGPT竞品。

下载

注意两个常见误解:

  • virsh reboot ≠ 客户机里敲 reboot;它是向 QEMU 发送 reset 信号,类似按机箱重启键,不经过客户机 OS,可能跳过 shutdown hook
  • 没有 virsh force-shutdown 这种命令;所谓“强制关机”就是 destroy,别试图组合其他参数
  • 执行 destroy 后,虚拟机状态变为 shutoff,但配置仍保留在 libvirt 中,下次 start 仍可用

别忽略 autostart 和状态残留问题

很多人反复遇到“明明关机了,重启宿主机后虚拟机又自己起来了”,根源是开了 autostart 却忘了关。而 virsh shutdown 或 destroy 都不会影响 autostart 设置。

关键动作:

  • 查是否启用自启:virsh autostart --print-uri vm-name(输出 yes 表示已开)
  • 关闭自启:virsh autostart --disable vm-name,否则每次宿主机 reboot,它都会被拉起来
  • shutoff 状态不是“消失”,只是关机;误删配置要用 virsh undefine vm-name,但该操作不可逆,且不删磁盘文件

最易被忽略的一点:virsh 的所有操作都基于 libvirt 的 domain 定义,而不是进程或磁盘存在与否。状态混乱、命令不响应、找不到虚拟机,八成是定义丢失或 URI 指向错误(比如用了 qemu:///session 而非默认的 qemu:///system)。

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

20

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

20

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

20

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

20

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

2026.11.04

0

15

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

40

18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程