2025年virsh 关机_kvm 虚拟化 virsh shutdown 无法关闭虚拟机[通俗易懂]

virsh 关机_kvm 虚拟化 virsh shutdown 无法关闭虚拟机[通俗易懂]问题 安装 kvm 虚拟化并且安装客户机之后 通过 virsh shutdown 命令无法关闭客户机 只能通过 virsh destroy 进行强制关闭电源 虽然这也是一种方法 但是直接断电显然有点不妥 并且你并不知道何时会出现一些奇奇怪怪的问题 在下图中我分别对客户机 centos6 5 和 hongxuecento 5 试图执行 virsh shutdown 进行正常关闭 输出信息为

问题:

安装 kvm 虚拟化并且安装客户机之后,通过 virsh shutdown 命令无法关闭客户机,只能通过 virsh destroy 进行强制关闭电源。虽然这也是一种方法,但是直接断电显然有点不妥,并且你并不知道何时会出现一些奇奇怪怪的问题。

在下图中我分别对客户机 centos6.5 和 hongxuecentos6.5 试图执行 virsh shutdown 进行正常关闭,输出信息为: Domain “client” is being shutdown,但是通过 virsh list –all 进行查看

解决方案:

shutdown使用发送acpi指令来控制虚拟机的电源,而KVM虚拟机安装linux系统时默认没有安装acpi服务,反以导致不能关闭虚拟机,需要安装acpi。

分别在两台虚拟机中安装 acpi 服务,并且开启 acpd 服务

等待acpd服务启动之后,即可通过 virsh shutdown 来正常关机。

acpid 介绍(以下内容来自百度百科):

ACPId服务是AdvancedConfigurationandPowerInterface缩写,acpid中的d则代表daemon。Acpid是一个用户空间的服务进程,它充当Linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。

ACPId服务与内核的通信方式:acpid用poll函数挂在/proc/acpi/event文件上。内核在drivers/acpi/event.c中实现了该文件的接口,一旦总线事件列表(acpi_bus_event_list)上有电源管理事件发生,内核就会唤醒挂在/proc/acpi/event上的acpid,acpid再从/proc/acpi/event中读取相应的事件。acpid与应用程序的通信方式有两种,

其一是通过本地socket,其文件名为/var/run/acpid.socket,应用程序只要连接到这个socket上,不用发送任何命令就可以接收到acpid转发的电源管理事件。

其二是通过配置文件。在acpid收到来自内核的电源管理事件时,根据配置文件中的规则执行指定的命令。

ACPId服务配置文件在/etc/acpi/events/目录下, 下面是一个示例: event=button/power.*action=/sbin/shutdown-hnow ACPId服务事件的格式为: device_classbus_idtypedata。device_class和bus_id是字符串,type和data是十六制整数。在配置文件中可以使用通配符,来匹配指定的事件。

编程小号
上一篇 2025-02-27 07:46
下一篇 2025-02-20 07:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/137994.html