Sun Cluster HA for NFS 故障监视器使用以下两个进程:
NFS 系统故障监视,该进程包括监视 NFS 守护程序(nfsd、mountd、statd 和 lockd)和解决发生的所有问题。 NFS 系统故障监视进程还监视 RPC 端口映射器服务守护程序 (rpcbind)。
NFS 资源故障监视,每个 NFS 资源都有各自的资源故障监视进程。 每个资源的故障监视器检查每个共享路径的状态,以监视资源输出的文件系统。
首先,NFS 资源 MONITOR_START 方法启动 NFS 系统故障监视器。 此启动方法先检查 NFS 系统故障监视器 (nfs_daemons_probe) 是否已在进程监视器守护程序 (rpc.pmfd) 下运行。 如果 NFS 系统故障监视器未运行,启动方法将在进程监视器的控制下启动 nfs_daemons_probe 进程。 然后,启动方法将仍然在进程监视器的控制下启动资源故障监视器 (nfs_probe)。
首先,NFS 资源 MONITOR_STOP 方法停止资源故障监视器。 然后,如果本地节点上没有运行其它 NFS 资源故障监视器,此方法将停止 NFS 系统故障监视器。
NFS 系统故障监视器通过检查进程是否存在及其对空 rpc 调用的响应,来探测本地节点上的 rpcbind、statd、lockd、nfsd 和 mountd。 此监视器使用以下 NFS 扩展特性。
Rpcbind_nullrpc_timeout | Lockd_nullrpc_timeout |
Nfsd_nullrpc_timeout | Rpcbind_nullrpc_reboot |
Mountd_nullrpc_timeout | Nfsd_nullrpc_restart |
Statd_nullrpc_timeout |
Mountd_nullrpc_restart |
请参见配置 Sun Cluster HA for NFS 扩展特性以查看或设置扩展特性。
每个系统故障监视器探测循环周期内将执行以下步骤。
进行休眠,时间为 Cheap_probe_interval。
探测 rpcbind。
如果进程意外终止,但是守护程序正在进行重新热启动,rpcbind 将继续探测其它守护程序。
如果进程意外终止,则故障监视器将重新引导节点。
如果针对守护程序的空 rpc 调用意外终止,并且 Rpcbind_nullrpc_reboot=True,Failover_mode=HARD,则故障监视器将重新引导节点。
先探测 statd,然后探测 lockd。
如果 statd 或 lockd 意外终止,则系统故障监视器将尝试重新启动这两个守护程序。
如果针对这些守护程序的空 rpc 调用意外终止,则故障监视器将在 syslog 中记录一条消息,但是不会重新启动 statd 或 lockd。
探测 mountd。
如果 mountd 意外终止,则故障监视器将尝试重新启动该守护程序。
如果针对守护程序的空 rpc 调用意外终止,并且 Mountd_nullrpc_restart=True,则故障监视器将在群集文件系统可用时尝试重新启动 mountd。
探测 nfsd。
如果 nfsd 意外终止,则故障监视器将尝试重新启动该守护程序。
如果针对守护程序的空 rpc 调用意外终止,并且 Nfsd_nullrpc_restart=TRUE,则故障监视器将在群集文件系统可用时尝试重新启动 nfsd。
如果上述任何 NFS 守护程序(rpcbind 除外)在探测周期期间无法重新启动,则 NFS 系统故障监视器将在下一个周期内再次尝试重新启动。 当所有 NFS 守护程序均已重新启动并且运行正常时,资源状态将被设置为 ONLINE。 监视器在上一个 Retry_interval 内记录 NFS 守护程序的意外终止。 如果守护程序的意外终止总数达到了 Retry_count,则系统故障监视器将发出 scha_control 停止通知。 如果停止调用失败,监视器将尝试重新启动失败的 NFS 守护程序。
在每个探测周期的末尾,如果所有守护程序均正常运行,监视器将清除故障历史记录。
启动资源故障监视器探测之前,请从 dfstab 文件读取所有共享路径并将它们存储在内存中。 在每个探测周期内,通过对路径执行 stat() 以探测每个迭代中的所有共享路径。
每个资源故障监视器故障探测将在一个循环中执行以下步骤。
进行休眠,时间为 Thorough_probe_interval。
如果 dfstab 自上次读取后已发生更改,则刷新内存。
如果在读取 dfstab 文件时发生错误,则资源状态将被设置为 FAULTED,监视器将跳过当前探测周期的剩余检查。
通过对路径执行 stat() 以探测每个迭代中的所有共享路径。
如果任何路径不能正常运行,则资源状态将被设置为 FAULTED。
探测 NFS 守护程序(nfsd、mountd、lockd 和 statd)以及 rpcbind 是否存在。
如果这些守护程序中的任何一个停止,则资源状态将被设置为 FAULTED。
如果所有共享路径都有效并且 NFS 守护程序都存在,则资源状态将在探测周期的末尾被重置为 ONLINE。