NFS 分区未安装,而“mount”显示已安装

NFS 分区未安装,而“mount”显示已安装

有 3 台服务器NFS安装了(ver.4)分区。服务器 A 和 B 都很好,但是服务器 C 上的分区安装不正确。在服务器 A 和 B 上进行的更改不会传播到服务器 C,反之亦然。mount在服务器 C 上显示分区已安装:

mount |grep snapshots
swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904 on /opt/gicapods/snapshots type nfs4 (rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.148.149,local_lock=none,addr=10.47.15.114)

但是df仅在直接查询时显示它

df -h|grep snapshots
 
df -h /opt/gicapods/snapshots/
Filesystem                                                        Size  Used Avail Use% 
Mounted on
swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904  400G  163G  223G  43% /opt/gicapods/snapshots

该行来自fstab

grep snapshots /etc/fstab
swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904  /opt/gicapods/snapshots nfs defaults        0 0

自服务器上次重新启动以来我进行了搜索/var/log/messages,但没有找到任何相关内容。

请告知这里可能的根本原因是什么。有什么办法可以防止这种情况再次发生吗?

更新:

grep -e snapshots -e swdvnasots0014 -e swdicgv000803 /proc/self/mountinfo /proc/self/mounts /proc/mounts /etc/mtab 
/proc/self/mountinfo:187 49 0:42 / /opt/gicapods/snapshots rw,relatime shared:164 - nfs4 swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904 rw,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.148.149,local_lock=none,addr=10.47.15.114 
/proc/self/mounts:swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904 /opt/gicapods/snapshots nfs4 rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.148.149,local_lock=none,addr=10.47.15.114 0 0
/proc/mounts:swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904 /opt/gicapods/snapshots nfs4 rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.148.149,local_lock=none,addr=10.47.15.114 0 0
/etc/mtab:swdvnasots0014.nam.nsroot.net:/swdicgv000803/icgqt000803_c153904 /opt/gicapods/snapshots nfs4 rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.148.149,local_lock=none,addr=10.47.15.114 0 0

答案1

仅仅提供这种情况的根本原因几乎是不可能的,但我将提供一些调试和调查的技巧,因为在评论部分很难做到这一点。您可以将不同操作的输出添加到原始问题中,我将尝试编辑答案,直到希望我们能够找到根本原因。

  1. 首先重要的是要以清晰且不同的方式表达问题。 “磁盘未安装”与“更改未传播”不同。我们可以清楚地看到磁盘已安装,来自所有与安装相关的文件和命令。

  2. 现在,您说更改不会传播。坐骑的初始状态是什么?机器A/B和C之间挂载的内容是否完全不同?或者有一些常用的文件吗?看起来像吗曾是在某个时刻相同的安装(直到“更改停止传播”),或者内容完全不同?

  3. 另一件事是仔细检查所有三台机器上的所有安装选项和源是否完全相同。很容易忽略一些差异和类型,特别是当坐骑的名称如此复杂并且包含不同的数字时。您可能在主机 C 上使用不同的服务器或磁盘,差异甚至可能是一个小字符,从而改变一切。因此,您应该在所有三台机器上运行以下命令,并检查它是否完全相同。查看每一个 字符以确保其相同。也许是不同的服务器或IP?

mount |grep snapshot
  1. 当您比较磁盘时,您是否比较相同的文件夹?主挂载文件夹和子文件夹之间有区别吗?尝试在机器 C 上创建一个文件,并检查该文件确实安装在同一位置,但在主机 A 和 C 上不存在。
touch /opt/gicapods/snapshots/testfile
df /opt/gicapods/snapshots/testfile
  1. 在上一步中进行测试后,立即检查是否有到 NFS 服务器的开放端口(不要犹豫,因为这些端口在一段空闲时间后会关闭,并在下次访问挂载时由内核重新打开) )。
ss |grep <IP of the NFS file server>
  1. 还要检查主机 C 和服务器之间是否有任何网络通信,方法是在一个终端上使用 tcpdump,并尝试在另一个终端上进行一些操作(ls、查找、读取、写入等)。当您在挂载上执行操作时,请检查 tcpdump 是否输出任何内容。
tcpdump -s0 -i any host swdvnasots0014
  1. 尝试将磁盘手动挂载到主机 C 上的另一个挂载点上。您会看到什么?这个新挂载点内的内容与您/opt/gicapods/snapshots在主机 C 或主机 A/B 上看到的内容相同吗?当您在此新挂载点中进行更改时,会发生什么情况?您是否看到更改传播到主机 C 或主机 A/B 上的原始挂载点?

希望此时您已经有了一些线索。如果您在调查过程中找到了答案,请在您的问题中更新。如果没有,只需将不同测试的结果添加到问题中,以便我们可以继续。祝你好运!

相关内容