kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法

今天笔者在对kvm虚拟机进行管理时,使用virsh shutdown命令关闭指定的虚拟机时,发现虽然有如下的提示,但其实虚拟机却一直不会真正的关闭。

经过查看virsh命令帮助和上网查询,才得知virsh shutdown命令使用发送acpi指令来控制虚拟机的电源

而kvm虚拟机安装linux系统时默认是没有安装acpi服务的,所以并不会做处理。据说安装windows会自动安装acpi服务,没测试过。

知道了原因、解决方法也就简单了、我们只需要在虚拟机里安装和启动acpid服务即可,执行命令如下:

[[email protected]_client_00 ~]# yum install acpid -y
[[email protected]_client_00 ~]# /etc/init.d/acpid restart       //重新启动acpic服务,安装后默认会加入到开机启动的

最后这里笔者简单讲一下关于apcpid服务的工作原理。

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/power.conf,下面是一个示例:

event=button/power.*

action=/sbin/shutdown-hnow

ACPId服务事件的格式为:

device_classbus_idtypedata。device_class和bus_id是字符串,type和data是十六制整数。在配置文件中可以使用通配符,来匹配指定的事件。

尊重别人的劳动成果 转载请务必注明出处:http://www.cnblogs.com/5201351/p/4462541.html

时间: 2024-11-10 09:09:46

kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法的相关文章

virsh shutdown 无法关闭虚拟机

今天测试了一下kvm的虚拟机的开机与关机,但是通过virsh shutdown关闭一直不生效,在网上搜索之后终于找到原因,是因为虚拟机安装的centos为最小化安装,没有安装电源管理程序,也就是acpid,因此虚拟机没有处理该指令 解决办法 #yum install acpid #service acpid start 然后就可以优雅的关闭虚拟机啦,就不用destroy这种粗暴的方式了 virsh shutdown 无法关闭虚拟机

excel2003出现“向程序发送命令时出现错误”解决方法

电脑已经预装了office2010,因为想要学习 <Excel 图标之道>,安装了Excel2003,刚刚安装好,打开出现“向程序发送命令时出现错误”,虽然点击确定就可以用了,可总是觉得不爽,网上找了相关方法, 1. 在资源管理器中进入“C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates”目录,删除其中的“Normal.dot”公用模板文件(可能还有个隐藏的编辑中的文件,一并删除),再重新启动

windows下使用GNU make命令报错的解决方法

windows下使用GNU make命令报错的解决方法=> 错误信息:make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4227d3) ## 1.原因环境变量中配置了`D:\Program Files (x86)\Git\bin`,该目录下存在一个`sh.exe` 在执行make命令时,如果在`MakeFile`文件中没有指定shell的路径,`make`就会到环境变量中,去找一个`X:\\XXX\XXX\sh.exe`作

virtualbox虚拟机下的cdlinux找不到无线网卡的解决方法

virtualbox虚拟机下的cdlinux找不到无线网卡的解决方法 自己解决了,记录一下. cdlinux 带reaver1.4的版本 http://pan.baidu.com/share/link?shareid=64767&uk=1375789583 ( 大概是老毛桃制作的 , 下载后改后缀为.iso即可 ) 安装cdlinux的过程很简单,把iso加载到虚拟机的光盘上,一路next就行了,安装完毕后你进入cdlinux界面,有90%的可能你点开minidwep-gtk .Inflator

Java虚拟机系列(三)---内存溢出情况及解决方法

因为Java虚拟机内存有堆内存.方法区.虚拟机栈.本地方法栈和程序计数器五部分组成,其中程序计数器是唯一一块不会发生内存溢出异常的内存区,所以只有四类内存区可能发生内存溢出异常,其中虚拟机栈和本地方法栈都是Java方法执行的内存模型,所以它们的异常发生情况几乎相同,另外,在方法区中.又有一块内存是常量池,所以内存溢出的情况可分为Java堆溢出.虚拟机栈和本地方法栈溢出.方法区和运行时常量池溢三种情况. 一.Java堆溢出 1.产生的原因:因为堆中存放的是对象实例和数组,所以当对象数量>最大堆容量

使用 ESXi esxcli 命令关闭虚拟机电源

https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1014165 在 ESXi 主机上关闭虚拟机电源时,会遇到以下症状: 无法关闭 ESXi 托管的虚拟机的电源 虚拟机无响应,且无法停止或终止 可以在本地或远程使用 esxcli 命令关闭 ESXi 5.x 或更高版本上运行的虚拟机电源. 有关详细信息,请参见 vSphere Command-Line

虚拟化管理服务器(手动安装虚拟机,写脚本利用命令安装虚拟机,虚拟机管理+复制+快照)

1.什么是虚拟化管理将linux真实主机里面的一些东西放到虚拟机上面去管理,然后对虚拟,机进行种种管理,其实虚拟机和真机二者功能差不多,只不过真机为操作系统,占用磁盘空间大,虚拟机是一款软件,占用空间少2.为什么要进行虚拟化管理?实际企业中的服务器数量非常多,并且服务器运行起来工作的时候散热量非常大,为了安全起见,就需要大量的制冷装置,制冷的耗电量与服务器的个数相关,为了降低能源消耗,企业应该尽可能的减少服务器的个数,因此在服务器上装上虚拟机,用虚拟机代替其他服务器的部分工作,这样就能减少服务器

Hyper-V虚拟机Redhat添加网卡找不到网卡配置文件解决方法

环境:Hyper-V虚拟机上面安安装Redhat6.7 问题:系统安装时,只有一块网卡,现根据需要,增加一块网卡,DHCP获取IP地址,在Hyper-V设置中增加网卡后,存在连个问题:1./etc/sysconfig/network-scripts/中找不到配置文件且无法连接外网 解决方法: 1.cat /etc/udev/rules.d/70-persistent-net.rules 查看网卡的MAC地址和网卡名称 2. 在/etc/sysconfig/network-scripts/下建立i

升级到win10之后word和excel提示“向程序发送命令时出现问题”解决方法

本人的电脑直接从win7升级到win10之后,原来win7安装的是office2007,打开word和excel文档会提示“向程序发送命令时出现问题”,导致无法使用. 在网上找到解决方案如下: word解决方法:http://www.xitongcheng.com/jiaocheng/win10_article_10653.html 1.找到office 安装目录 C:\Program Files\Microsoft Office\Office12找到 WINWORD.exe这个exe文件. 2