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

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

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

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

[root@kvm_client_00 ~]# yum install acpid -y
[root@kvm_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

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

  1. win7系统不能用telnet命令的两种解决方法

    电脑专业人员对telnet命令都不陌生了,Telnet当成一种通信协议,在日常工作中,经常面对网络问题的人都会用到telnet命令,因为简单有效,可以帮助更快的找出问题.要是在使用过程中碰到win7纯 ...

  2. VMware虚拟机提示“锁定文件失败 打不开磁盘”解决方法

    VMware虚拟机提示“锁定文件失败 打不开磁盘”解决方法 摘自: http://www.xitongcheng.com/jiaocheng/xtazjc_article_40299.html 发布时 ...

  3. make:cc 命令未找到的解决方法

    安装redis时遇到的问题 make:cc 命令未找到的解决方法 没安装gcc,然后安装 yum install gcc yum install gcc-c++

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

    windows下使用GNU make命令报错的解决方法=> 错误信息:make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x ...

  5. win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!

    win7或win2008系统中,出现[已停止工作,联机检查解决方案并关闭该程序,关闭程序]解决方法! 经过摸索,点击[控制面板]-[操作中心]-[更改操作中心设置]-[问题报告设置]-[从不检查解决方 ...

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

    virtualbox虚拟机下的cdlinux找不到无线网卡的解决方法 自己解决了,记录一下. cdlinux 带reaver1.4的版本 http://pan.baidu.com/share/link ...

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

    因为Java虚拟机内存有堆内存.方法区.虚拟机栈.本地方法栈和程序计数器五部分组成,其中程序计数器是唯一一块不会发生内存溢出异常的内存区,所以只有四类内存区可能发生内存溢出异常,其中虚拟机栈和本地方法 ...

  8. Linux下登录Oracle命令行时删除键^H解决方法

    Linux下登录Oracle命令行时删除键^H解决方法 在linux服务器下登录oracle的控制台,如果输入错误,想用删除键删除时却不能删除,输出的是^H的字符. 方法 用如下的命令可以使删除键生效 ...

  9. Linux的桌面虚拟化技术KVM(五)——virsh常用命令

    Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 Linux的桌面虚 ...

随机推荐

  1. 通过phoenix在hbase上创建二级索引,Secondary Indexing

    环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本: ...

  2. python 函数结果缓存一段时间的装饰器

    把函数结果缓存一段时间,比如读取一个mongodb,mongodb中的内容又在发生变化,如果从部署后,自始至终只去读一次那就感触不到变化了,如果每次调用一个函数就去读取那太频繁了耽误响应时间也加大了c ...

  3. 一个非常好的C#字符串操作处理类StringHelper.cs

    /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:http://www.sufeinet.c ...

  4. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

  5. 上机题目(0基础)- 用数组实现记事本(Java)

    用java实现一个记事本程序,记录记下的按键,代码例如以下: package com.java.test; import java.awt.Graphics; import java.awt.even ...

  6. Maven------报错:Error resolving version for plugin

    配置Maven插件时报错:Error resolving version for plugin 'org.springframeboot.boot:spring-boot-maven-plugin' ...

  7. 为什么要使用JS模板引擎

    我之前在写一个输入联想控件的时候,改过好几个版本,每个版本不是因为性能不好就是因为代码凌乱而被推翻,最后用了understore模板引擎,效果有明显改善.整好这两天在研究互联网技术架构,发现很多的开发 ...

  8. Java虚拟机(一):JVM内存结构

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...

  9. iOS NSError

    写在前面 在iOS开发中,NSError的使用非常常见,使用也比较简单,也正因为简单,所以对这一部分知识不甚注重.但是近期在做app底层网络封装时发现了一些问题.我使用的网络框架是AFNetworki ...

  10. 用Nginx做静态文件的CDN

    这是上个月一次搭建多个静态文件节点的实践,转载自我的博客,欢迎交流. 鉴于监管环境和网站速度之间的矛盾,目前的网络架构方式如下:1.web动态页面(含数据库)架设在位于美国西海岸的数据中心:2.静态文 ...