問題描述:
RHEL 6.5版本RHCS在disable或者relocate service的時候,會導致節點重啟,查看日誌顯示umount掛载點失敗,日誌如下:
Nov 29 16:03:50 phblwdb1 rgmanager[61098]: [fs] Sending SIGKILL to processes on /PHBLW_D01
Nov 29 16:03:50 phblwdb1 rgmanager[61141]: [fs] 'umount /PHBLW_D01' failed, error=1
Nov 29 16:03:51 phblwdb1 rgmanager[61164]: [fs] umount failed – REBOOTING
①為什麼會umount失敗
②為什麼會導致節點REBOOTING
第一个umount失败的问题,我的情況是如果在一个节点cd 到挂载的目录(如这里的/PHBLW_D01),在另一个节点或本节点disable或relocate跟这个目录相关的服务,就会由于umount失败导致reboot。
用一个流程图描述这个过程如下:
正常情况下,disable的时候一般都有跟挂载点相关的进程,使用force_unmount参数,就会kill掉所有的进程,然后umount挂载点。
这里因为我使用着这个挂载点(cd 在挂载点)就kill不掉进程,是由于resource-agents-3.9.2-40.el6这个包版本过低引起,算是el6.5的bug,我们需要使用更高版本的包,
Update to resource-agents-3.9.2-40.el6_5.5
or later, or to resource-agents-3.9.5-12.el6
or later
我们可以去RHEL 6.6及以上的ISO文件找到,这里也提供一个下载链接:
http://rpm.pbone.net/index.php3?stat=3&search=resource-agents&srodzaj=3&dist[]=77
注意应用包的时候是不能直接rpm -e旧包的,因为跟rgmanager等相关的HA包关联,必须使用rpm -U直接升级。
第二个问题就好解释了,unmount失败之后因为参数self_fence="1"的存在导致reboot.
参考文档:
1. Red_Hat_Enterprise_Linux-6-Cluster_Administration-en-US
解释了force_umount和self_fence参数的作用
2.https://access.redhat.com/solutions/1462783
[fs or clusterfs resource fails to stop when a process has its current working directory (cwd) within the resource's mountpoint in a RHEL 6 High Availability cluster]