我已经build立了一个OCFS2作为后备文件系统的NFS集群。
除了当节点重新启动/closures干净时它会导致一个fence操作,因为在卸载OCFS2文件系统以通知其他节点它正在离开集群之前,networking被切断了。
networkingconfiguration为具有两个物理适配器的LACP绑定,以及两个提供IP连接的VLAN接口。 这已经在nmtui中进行了configuration,可能会对驻留在/ etc / sysconfig / network-scripts中的configuration文件进行一些小小的调整。
无论我添加什么依赖项(Before / After / Requires等),包括network-online.target和其他各种,或者添加我自己的systemd服务和脚本来处理unmounts,我可以让服务器通过systemd卸载_netdev OCFS2文件系统在networking被拆除之前。
我已经添加了debug.sh到/ usr / lib / systemd / system-shutdown来logging一些细节,这里是closures序列的启动位置,'ocfs unmounting device'是OCFS2被卸载的地方。
[309.286479] bond:bond0:警告:ens2f1 - 0c:c4:7a:bb:93:3f - 的永久HWaddr仍由bond0使用。 设置ens2f1的HWaddr 到不同的地址以避免冲突。 bonding:bond0:释放活动接口ens2f1 ixgbe 0000:02:00.1:删除ens2f1上的PHC [309.806098] pps pps0:新的PPS来源ptp0 [309.806100] ixgbe 0000:02:00.1:在ens2f1上注册的PHC设备 [310.028112] IPv6:ADDRCONF(NETDEV_UP):ens2f1:链路没有准备好 [310.028114] 8021q:将VLAN 0添加到设备ens2f1上的HWfilter [310.028750] bonding:bond0:删除活动聚合器 [310.028754] bonding:bond0:释放活动接口ens2f0 [310.028755] bonding:bond0:警告:清除bond0的HW地址,但仍有VLAN。 [310.028756] bonding:bond0:重新添加从站时,请确保该绑定的HW地址与其VLAN相匹配。 设备bond0进入混杂模式[310.028773] 设备ens2f0进入混杂模式 ixgbe 0000:02:00.0:删除了ens2f0上的PHC [310.328057] nfsd:最后一个服务器已经退出,刷新导出caching [310.549842] pps pps1:新的PPS来源ptp1 [310.549844] ixgbe 0000:02:00.0:在ens2f0上注册的PHC设备 [310.772136] IPv6:ADDRCONF(NETDEV_UP):ens2f0:链路没有准备好 [310.772137] 8021q:将VLAN 0添加到设备ens2f0上的HWfilter [310.773358] IPv6:ADDRCONF(NETDEV_UP):bond0.3xxx:链路没有准备好 [310.774187] IPv6:ADDRCONF(NETDEV_UP):bond0.31xx:链路没有准备好 [310.775060] IPv6:ADDRCONF(NETDEV_UP):bond0:链路没有准备好 [310.775560] IPv6:ADDRCONF(NETDEV_UP):bond0.3xxx:链路没有准备好 [310.779437] IPv6:ADDRCONF(NETDEV_UP):bond0.31xx:链路没有准备好 [310.832053] IPv6:ADDRCONF(NETDEV_UP):eno2:链路没有准备好 [310.883931] IPv6:ADDRCONF(NETDEV_UP):eno1:链路没有准备好 [312.995508] o2dlm:离开域78D2C50072B84C8899E6CA71D23E24CC [313.010803] ocfs2:卸载设备(252,3)(节点1) [313.022493] o2dlm:离开域4EBC5792914B4DC0B5C548A94924F48A [313.039052] ocfs2:卸载设备(252,5)(节点1) [314.108160] o2dlm:离开域0B217FA1ACA5452397F9DA8A8B792DA0 [314.122868] ocfs2:在(节点1)上卸载设备(252,4) [314.231817] ixgbe 0000:02:00.0:删除ens2f0上的PHC [314.893756] ixgbe 0000:02:00.1:删除ens2f1上的PHC [315.709225] audit_printk_skb:抑制了321个callback [315.709227] type = 1305 audit(1476683800.733:156):audit_pid = 0 old = 1053 auid = 4294967295 ses = 4294967295 res = 1 [315.718254] type = 1130 audit(1476683800.742:157):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = auditd comm =“systemd”exe =“/ usr / lib / systemd / systemd”hostname = ? 地址=? terminal=? RES =成功 [315.718271] type = 1131 audit(1476683800.742:158):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = auditd comm =“systemd”exe =“/ usr / lib / systemd / systemd”hostname = ? 地址=? terminal=? RES =成功 [315.726152] type = 1130 audit(1476683800.750:159):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = systemd-tmpfiles-setup comm =“systemd”exe =“/ usr / lib / systemd / systemd“hostname =? 地址=? terminal=? RES =成功 [315.726161] type = 1131 audit(1476683800.750:160):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = systemd-tmpfiles-setup comm =“systemd”exe =“/ usr / lib / systemd / systemd“hostname =? 地址=? terminal=? RES =成功 [315.734233] type = 1130 audit(1476683800.758:161):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = rhel-import-state comm =“systemd”exe =“/ usr / lib / systemd / systemd“hostname =? 地址=? terminal=? RES =成功 [315.734251] type = 1131 audit(1476683800.758:162):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = rhel-import-state comm =“systemd”exe =“/ usr / lib / systemd / systemd“hostname =? 地址=? terminal=? RES =成功 [315.743145] type = 1130 audit(1476683800.767:163):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = rhel-readonly comm =“systemd”exe =“/ usr / lib / systemd / systemd”主机名=? 地址=? terminal=? RES =成功 [315.743153] type = 1131 audit(1476683800.767:164):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = rhel-readonly comm =“systemd”exe =“/ usr / lib / systemd / systemd”主机名=? 地址=? terminal=? RES =成功 [315.782154] type = 1130 audit(1476683800.806:165):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = lvm2-monitor comm =“systemd”exe =“/ usr / lib / systemd / systemd”主机名=? 地址=? terminal=? RES =成功 [315.954555] systemd-shutdown [1]:将SIGTERM发送到其余进程... [315.958696] systemd-journald [720]:从PID 1(systemd-shutdow)收到SIGTERM。 [315.965900] systemd-shutdown [1]:发送SIGKILL到其余进程... [315.981786] systemd-shutdown [1]:卸载文件系统。 [316.002080] systemd-shutdown [1]:所有文件系统都被卸载。 [316.002083] systemd-shutdown [1]:取消掉期。
造成这种情况的原因是remote-fs.target太快了,因为OCFS2的networking性质使得文件系统的正确卸载花费的时间比unmount命令的实际返回稍微长一些。
在closuresnetworking的closures序列中的下一步,这意味着最后的文件系统总是被认为仍然在线到其他节点,导致围栏。
我的修复是用脚本中的适当延迟创build我自己的挂载/卸载脚本和systemd服务,并依赖于NetworkManager-wait-online.target。