首页/云/云平台与虚拟化速查/virsh autostart 开机自启
虚拟化操作94 条

virsh autostart 开机自启

autostart 让域在 libvirtd 启动后自动拉起:本质是在 autostart 目录放一份指向域定义的软链接,取消时用 --disable。

云平台与虚拟化速查云更新于 2026-10-13

autostart 是干什么的

virsh autostart 让虚机在宿主 libvirtd 启动时自动开机,实现方式是在 /etc/libvirt/qemu/autostart/ 目录下为该域建立指向定义文件的符号链接。前提是 libvirtd 服务自身已开机启用;对依赖外置存储或网络的虚机,存储尚未就绪时自启会失败,需要在宿主侧安排启动顺序。

基本信息

开启virsh autostart vm1
关闭virsh autostart --disable vm1
目录位置/etc/libvirt/qemu/autostart/
前提libvirtd 需开机运行(systemctl enable libvirtd)
作用范围仅本机 libvirtd,节点间不感知也无顺序保证

典型使用场景

  • 单机虚拟化宿主上让关键虚机随宿主重启自动恢复
  • 实验与测试环境里批量拉起常用虚机
  • 宿主机做计划停电维护后恢复服务
  • 对依赖外置存储的虚机,先确认存储挂载再让 libvirtd 拉起虚机

设置与核对

设置与核对
sudo virsh autostart vm1                     # 开启自启
sudo virsh autostart --disable vm1           # 关闭自启
ls -l /etc/libvirt/qemu/autostart/           # 查看自启软链接是否指向正确的定义
virsh dominfo vm1 | grep -i autostart        # 确认状态为 Autostart: enable
systemctl is-enabled libvirtd                # 前提检查:libvirtd 是否开机启用
sudo systemctl enable --now libvirtd         # 未启用时补上

状态核对

项目正常表现异常表现
自启状态dominfo 显示 enable显示 disable:配置未生效或被后续操作覆盖
软链接目录中存在与域名一致的链接链接指向已删除的定义,开机时静默跳过
libvirtdis-enabled 返回 enabled服务未启用,宿主重启后所有虚机都不起来
虚机状态重启后为 running为 shut off:多为存储或网络未就绪导致启动失败
自启失败要看两处日志:宿主侧 journalctl -u libvirtd 看服务与启动顺序,虚机侧 /var/log/libvirt/qemu/<域名>.log 看 QEMU 的报错。
自启不等于健康检查:libvirtd 只负责拉起虚机进程,不监控 guest 内的服务状态;应用级拉起仍要靠 guest 内的 systemd 单元或启动脚本。

自启失败排查顺序

  • 确认 libvirtd 是否开机启用,服务没起来虚机自然也不会起
  • 检查 autostart 目录里的链接是否指向仍然存在的域定义文件
  • 查看 /var/log/libvirt/qemu/<域名>.log,确认是否有存储或网络路径缺失
  • 对依赖外置存储的虚机,确认存储挂载在 libvirtd 之前完成,必要时用 systemd 依赖控制顺序

易错点

  • 宿主重启后虚机没起来:先确认 libvirtd 服务自身是否开机启用
  • 对依赖外置存储的域设置自启,存储未就绪导致启动失败
  • 依赖 autostart 保证虚机启动顺序,但 libvirt 只做并行拉起,业务间先后依赖得不到保证
  • 手工删除了 /etc/libvirt/qemu/ 下的定义文件,autostart 目录里的链接变成悬空链接,开机时静默跳过

数据来源与参考

  • libvirt 文档:virsh autostart
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌