在一个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共享configuration有以下输出参数:
/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上的nfs-kernel-server软件包也是v1:1.2.8-6ubuntu1.2
任何帮助将不胜感激,因为我想深究造成这些错误的原因。
经过许多故障排除后,似乎在我的情况下,这些错误与我们某些客户机上的fstab条目中的clientaddr挂载选项有关,这些机器被设置为不正确的IP地址。 经过每个主机,确保所有clientaddr值是正确的,重新安装卷,我能够提取这两个档案,前面描述,没有任何错误。
应该注意的是, NFS手册页特别提到,就clientaddr挂载选项而言:
如果服务器无法与客户端build立回叫连接,则性能可能会降低,或者对文件的访问可能暂时挂起。
我为此怀疑,我所看到的问题与服务器无法build立到configuration了错误的客户端callback地址的客户端的回拨连接有关。