在rhel5时代使用xen虚拟化的时候,默认/etc/init.d/xendomains服务是启动的,这个服务是确保当正常关闭物理机(不是突然断电)时,如果有虚拟机正在运行,则默认会先保存正在运行的虚拟机状态然后才关闭宿主系统(host),这样下次物理机启动的启动的时候就会再把虚拟机恢复到上次关机前的状态。但是这样会导致关机的时间变长,需要保存的虚拟机越多耗时越长;如果在虚拟机上面配置了集群,还会导致更加严重的问题,由于集群对不同资源启动顺序的要求,可直接导致集群上的服务(Resource Group/Service Group)启动失败。
虽然rhel6上的虚拟化从xen换到了kvm,但是类似rhel5下xendomains的服务依旧存在,在kvm下叫libvirt-guests,在虚拟出来的节点上做集群服务时,为确保集群在物理机重启后仍能正常工作,建议在搭建集群前就停止该服务,并chkconfig libvirt-guests off。
kvm下libvirt-guests服务功能演示:
如果没有chkconfig libvirt-guests off,host关机时会自动执行/etc/init.d/libvirt-guests stop,host启动时会自动执行/etc/init.d/libvirt-guests start。
[root@desktop20 ~]# /etc/init.d/libvirt-guests status
started
[root@desktop20 ~]# virsh list
Id 名称 状态
----------------------------------
1 node4 running
2 node1 running
3 node2 running
4 node3 running
[root@desktop20 ~]# /etc/init.d/libvirt-guests stop
Running guests on default URI: node4, node1, node2, node3
Suspending guests on default URI...
Suspending node4: done
Suspending node1: done
Suspending node2: done
Suspending node3: done
[root@desktop20 ~]# /etc/init.d/libvirt-guests start
Resuming guests on default URI...
Resuming guest node4: done
Resuming guest node1: done
Resuming guest node2: done
Resuming guest node3: done
[root@desktop20 ~]#
推荐做法:
[root@desktop20 ~]# /etc/init.d/libvirt-guests stop
Running guests on default URI: node4, node1
Suspending guests on default URI...
Suspending node4: done
Suspending node1: done
[root@desktop20 ~]# chkconfig libvirt-guests off
[root@desktop20 ~]# virsh start node1
域 node1 已开始
[root@desktop20 ~]# virsh start node2
域 node2 已开始
[root@desktop20 ~]# virsh start node3
域 node3 已开始
[root@desktop20 ~]# virsh start node4
域 node4 已开始
[root@desktop20 ~]# virsh list
Id 名称 状态
----------------------------------
11 node1 running
12 node2 running
13 node3 running
14 node4 running
[root@desktop20 ~]#
ref1提供了一种直接改/etc/init.d/libvirt-guests脚本的方法,没验证过,应该也是可行的:
vim /etc/init.d/libvirt-guests ... ON_SHUTDOWN=shutdown SHUTDOWN_TIMEOUT=10 ... :wq