我一直在尝试找出在 NFS 共享上提取 tar 档案时出现的奇怪错误的根源。
当提取包含已归档文件的 tar 文件时,如果未设置已归档文件的写权限,则会出现错误。
错误消息间歇性地打印如下:
tar: test/doc/manpages/man1/Makefile.in: Cannot close: Input/output error
为了确认这种行为,我设置了两个相同的 tar 文件:一个存档文件chmod
权限设置为 575(用户读/执行),另一个存档chmod
文件权限设置为 755(用户读/写/执行)。
两个 tar 文件存档如下:
tar czf test.tgz test
并提取如下:
tar -xvzf test.tgz
在本地文件系统上提取两个存档时,我没有收到任何错误。此外,在 NFS 共享上提取具有用户写入权限的存档时,我没有收到任何错误。在将存档集提取到 NFS 共享上而没有存档文件的用户写入权限时,总是会发生错误。
NFS 共享配置了以下导出参数:
/media/share 10.0.0.3(rw,sync,no_subtree_check,no_root_squash)
NFS 挂载的客户端 fstab 条目如下:
10.0.0.3:/media/share /media/share nfs4 rw,_netdev,auto,clientaddr=10.0.0.10 0 0
客户端和服务器都运行 Ubuntu 14.04.1
nfs-common
客户端和服务器上的版本均为,v1:1.2.8-6ubuntu1.2
服务器nfs-kernel-server
上的软件包也均为v1:1.2.8-6ubuntu1.2
任何帮助都将不胜感激,因为我想彻底了解导致这些错误的原因。
答案1
经过多次故障排除后,在我看来,这些错误似乎与clientaddr
我们某些客户端计算机上的 fstab 条目中的挂载选项设置为错误的 IP 地址有关。检查完每台主机,确保所有clientaddr
值都正确无误,然后重新挂载卷后,我能够提取前面描述的两个档案,没有任何错误。
需要注意的是NFS 手册页关于clientaddr
mount 选项,特别提到:
如果服务器无法与客户端建立回调连接,性能可能会下降,或者文件访问可能会暂时挂起。
因此,我怀疑我看到的问题与服务器无法与配置了错误客户端回调地址的客户端建立回调连接有关。