nfs 文件传输失败,“cp:无法统计‘dir_name’:没有这样的文件或目录”,但 sshfs 工作正常

nfs 文件传输失败,“cp:无法统计‘dir_name’:没有这样的文件或目录”,但 sshfs 工作正常

我们的文件服务器(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 卷并从中导出,似乎已经解决了这个问题。

相关内容