【运维案例】容器混部时虚IP漂移导致NFS失效问题

产品:openEuler

版本:22.03-LTS

分类:内核 / 文件系统

来源:现网

[背景及现象描述]

两种操作系统混部组成3节点集群,部署高可用 nfs业务;客户端挂载欧拉系统节点对应虚ip;注入异常使欧拉系统节点上的虚IP迁移至 Ceotos 系统节点;发现客户端挂载目录不可用,报错如下
[root@node10 mnt]# ls
ls: cannot access ‘nfsshare1’: Stale file handle
cephfs nfsshare

操作系统1:CentOS Linux release 7.7.1908 (Core); Linux node12
5.4.132-1.xfs.el7.x86_64 #1 SMP Thu Mar 24 12:27:09 CST 2022 x86_64
x86_64 x86_64 GNU/Linux
操作系统2:openEuler 22.03 LTS;Linux node10 5.10.0-
60.18.0.50.oe2203.x86_64 #1 SMP Wed Mar 30 03:12:24 UTC 2022 x86_64
x86_64 x86_64 GNU/Linux

问题分析:若原始附属的虚IP再迁移回原节点,则故障可解除

[原因分析]

内核实现的cephfs客户端的fsid计算方式变更导致的fsid计算结果不同

file handle的组成成分中包含了fsid。
file handle是由NFS服务端生成,使用到了由ceph客户端生成的fsid。ceph客户端作为NFS服务端。
主备服务器上ceph客户端生的fsid不同,导致了对于同一个目录的file handle不同。

切换前,服务端生成file handle之后,发送给客户端,客户端根据此file handle操作共享目录
切换后,客户端依然使用之前的file handle与另一服务端通信,但此时新服务端无法计算出相同的file handle,导致file handle查找失败,报告了stale file handle的错误

[解决方法]

在centOS上合入升级fsid计算方式的补丁后问题解决。
补丁:kernel/git/torvalds/linux.git - Linux kernel source tree

3 个赞