为什么在 NFS 挂载中读取符号链接时会暂时出现“输入/输出错误”?

为什么在 NFS 挂载中读取符号链接时会暂时出现“输入/输出错误”?

我使用 scp 将一些文件复制到文件服务器主机上的 XFS 本地分区,并通过 SSH 创建指向本地新部署文件的符号链接。该分区通过 NFS 导出并安装在多个主机上。

scp new-file-version fileserver:/nfs/exported/path
ssh fileserver ln -s new-file-version /nfs/exported/path/file

如果我在文件服务器本地检查部署的文件和符号链接,一切都很好:

fileserver$ ls -l /nfs/exported/path
lrwxrwxrwx  1 root root  56 Oct 30 12:30 file -> new-file-version
-rwxr-xr-x 11 root root 220 Oct 30 12:34 new-file-version
-rwxr-xr-x 11 root root 220 Oct 30 12:12 previous-file-version

但是,当我尝试查看已部署的文件或通过 NFS 复制它们时,我在刚刚创建的符号链接中收到一些输入/输出错误:

nfsclient$ ls -l /nfs/mounted/path
ls: cannot read symbolic link /nfs/mounted/path/file: Input/output error
lrwxrwxrwx  1 root root  56 Oct 30 12:30 file
-rwxr-xr-x 11 root root 220 Oct 30 12:34 new-file-version
-rwxr-xr-x 11 root root 220 Oct 30 12:12 previous-file-version

NFS 挂载路径上的 stat 命令报告以下信息:

nfsclient$ stat /nfs/mounted/path
  File: '/nfs/mounted/path'
  Size: 175             Blocks: 0          IO Block: 32768  directory
Device: 2ch/44d Inode: 560507638   Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-11-02 14:25:04.677606317 +0100
Modify: 2018-11-02 14:25:28.630755680 +0100
Change: 2018-11-02 14:25:28.630755680 +0100
 Birth: -

请注意,访问时间早于修改/更改时间,尽管我刚刚读取了目录内容。

如果我重试该操作,经过一番尝试后最终会成功:

nfsclient$ ls -l /nfs/mounted/path
lrwxrwxrwx  1 root root  56 Oct 30 12:30 file -> new-file-version
-rwxr-xr-x 11 root root 220 Oct 30 12:34 new-file-version
-rwxr-xr-x 11 root root 220 Oct 30 12:12 previous-file-version

然后 stat 报告此信息并更新访问时间:

nfsclient$ stat /nfs/mounted/path
  File: '/nfs/mounted/path'
  Size: 175             Blocks: 0          IO Block: 32768  directory
Device: 2ch/44d Inode: 560507638   Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-11-02 14:25:30.925774294 +0100
Modify: 2018-11-02 14:25:28.630755680 +0100
Change: 2018-11-02 14:25:28.630755680 +0100
 Birth: -

关于为什么会发生这种情况有任何线索吗?

答案1

嗯,根据https://bugzilla.redhat.com/show_bug.cgi?id=1416532,这是 RHEL7.3 中的一个错误,这正是我们使用的版本。

它已在内核 kernel-3.10.0-562.el7 中修复。

相关内容