我们的文件服务器(Debian Wheezy 32 位)上有一个奇怪的问题,在使用 cp 命令传输 nfs 共享中包含的文件夹中的某些文件时会失败。但是,如果我们通过 sshfs 安装同一个文件夹并使用它来传输文件,则不会出现问题。我们有一些需要 nfs 的东西,因此 sshfs 不是一个解决方案,而是一个变通方法。
当尝试将 cp -ra 文件夹从客户端上的挂载点复制到客户端上的本地文件夹(也是 Debian Wheezy)时,共享中包含的一个或多个文件夹将失败,并出现以下错误:
cp: cannot stat `My_Shared_Folder/dir': No such file or directory
只有目录中包含的一些文件失败,其他文件确实被传输了。奇怪的是,每次失败的都是相同的文件夹。但如果我挂载相同的 My_Shared_Folder 并通过 sshfs 复制相同的目录,一切都会顺利进行。
我检查了权限,看起来没问题。有时(但并非总是如此),在尝试从 nfs 挂载复制文件后,失败目录上的权限字符串会发生变化:
ls -l My_Shared_Folder:
d????????? ? ? ? ? ? dir
drwxrwxr-x 2 nobody nogroup 4096 Apr 1 15:14 dir2
在该示例中,当使用 cp -r 在本地复制“My_Shared_Folder”时,dir2 会进行传输,但 dir 不会。
在尝试传输文件之前,文件夹权限看起来不错(对我来说):
ls -l My_Shared_Folder:
drwxrwxr-x 3 nobody nogroup 138 Mar 20 11:51 dir
drwxrwxr-x 2 nobody nogroup 4096 Apr 1 15:14 dir2
通过 /etc/exports 中的以下行在服务器上共享 nfs 共享:
/exports/My_Shared_Folder 10.10.10.0/21(ro,async,no_subtree_check,all_squash,anonuid=65534,anongid=65534)
客户端通过以下 fstab 条目访问共享:
10.10.10.95:/exports/My_Shared_Folder /mnt/My_Shared_Folder nfs noatime,user,ro 0 0
到目前为止我尝试过的事情:
- 我检查了权限
- 我尝试将 NEED_IDMAPD=yes 设置为 /etc/default/nfs-common
- 我验证了服务器和客户端上的 /etc/idmapd.conf 都显示正确的域
- 我尝试重启 nfs,然后绝望地重启整个服务器
由于 sshfs 运行良好,我现在个人认为这是一个 NFS 问题,但也许我错了。
答案1
看起来这个问题可能是由 nfs、xfs 和 inode64 的组合引起的。我已将数据移动到 ext3 卷并从中导出,似乎已经解决了这个问题。