我有一台 NFS 服务器,该服务器有一个挂载点,挂载在多台服务器上。我可以访问所有服务器上的文件。
在所有客户端上,我都遇到了以下行为。
$ ls
_index_ssl.html_old
$ ls -i _index_ssl.html
2966711 _index_ssl.html
$ ls -i _index_ssl.html_old
2966711 _index_ssl.html_old
请注意,ls 本身只显示 .html_old 文件。但是,我知道 .html 文件在那里,因为 Web 服务器正在正确提供该文件。如果我 vi _index_ssl.html,我就能正确看到文件的内容。另外,请注意,它们具有相同的 inode 编号。
旧文件由 Web 服务器创建。这是一个具有 w3 总缓存的 Wordpress 网站。当缓存被清除/清空时,它会将所有文件重命名为 _old。因此,旧文件以前是 .html,然后被重命名。最终,当再次创建缓存时,应该会在那里看到一个 .html 文件。
另一个非常奇怪的点是,在 NFS 服务器本身上,只有 .html_old 文件。
$ ls -i _index_ssl.html
ls: cannot access '_index_ssl.html': No such file or directory
再次强调,我想指出的是,所有 NFS 客户端都显示相同的文件。因此,文件夹已正确安装,并且文件确实存在于每个客户端上。但在服务器上,该文件不存在。此外,Web 服务器正在正确检索 _index_ssl.html 文件。它不使用 .html_old 文件。
服务器上的导出文件:
/folder <subnet>(rw,sync,no_subtree_check,no_root_squash)
在客户端上,mount 命令输出:
<server_ip>:/folder on /folder type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=<client_ip>,local_lock=none,addr=<server_ip>)
我也刚刚测试了在其中一个 Web 服务器上运行以下命令,并且文件(和内容)在 nfs 服务器和所有客户端上均可见。
date > newfile
我也尝试重命名该文件并且更改也出现在所有地方。
我没有使用 NFS4 添加的伪文件系统(或父导出)。