kvm虛擬機不能使用virsh shutdownw命令關閉虛擬機的解決方法


今天筆者在對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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM