使用 NFSv4 时列出目录很慢

使用 NFSv4 时列出目录很慢

我目前正在设置 Mac 客户端 (Macos 10.14.1) 和 Raspberry Pi3 服务器 (U16.04.1 LTS) 之间的基于 NFS 的文件共享。当我双启动 Mac (MacOS/Ubuntu18) 时,我想将 Pi 与 NFS 一起使用(我已经让 Samba 运行良好,但它无法处理 Unix 权限)作为公共主页,以减少文件重复并简化版本控制。在 MacOS 正常运行后,我将着手设置 Ubuntu。

我目前设置了两个共享,一个使用 NFS3(匿名的),另一个使用 NFSv4(主页/用户1)。读取/写入任一共享的文件都非常快,并且运行良好(除了 UID/GID 不匹配)。我遇到的问题是,虽然列出 NFS3 共享上的文件也非常快,但列出 NFSv4 共享上的文件却非常慢,我不知道为什么。

以下是我使用的所有设置。我没有mount --bind在服务器上使用它们,因为我认为它们没有必要,而且与我的问题无关,但我可能是错的。

我已经搜索此问题的解决方案很多天了,但是我读到的任何东西都不能解决我的问题,其他人总是抱怨包含大量文件的目录,而且我看到的任何建议都没有解决我的问题。 事实证明这与我的终端颜色设置有关,更新以下

最终,我想在我的 Mac 和 Pi 之间同步 UID/GID,但这是另一个问题,因为我现在不太了解如何使用 Kerberos(但希望不使用)设置 LDAP(或使用 NIS?)。此外,我现在没有设置域控制器。

提前感谢您花时间阅读我的问题和您的建议。

服务器端
在 /etc/exports 中:

/srv/anonymous *(rw,sync,insecure,no_subtree_check,all_squash)
/srv/home/user1 *(rw,sync,fsid=0,insecure,crossmnt,no_subtree_check,no_root_squash)

在 /etc/default/nfs-通用:

NEED_STATD=
NEED_IDMAPD=yes
STATDOPTS="--port 4000 --outgoing-port 4001"
NEED_GSSD=

在 /etc/default/nfs-内核服务器:

RPCNFSDCOUNT=8
RPCNFSDPRIORITY=0
RPCMOUNTDOPTS="--manage-gids -p 4002"
NEED_SVCGSSD=""
RPCSVCGSSDOPTS=""
RPCNFSDOPTS=""

/etc/idmapd.conf:

[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs

[Translation]
   Method=static
[Static]
   [email protected] = user1

[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/etc/modprobe.d/blacklist.conf:

blacklist rpcsec_gss_krb5

/etc/modprobe.d/options.conf:

options lockd nlm_udpport=4001 nlm_tcpport=4001

/etc/模块:

lockd

/sys/模块/nfsd/参数/nfs4_disable_idmapping:

Y  (I've tried manually setting this to "N" but it gets overwritten)
   (So I'm using nfs-common to manage this via the 'NEED_IDMAPD=yes' option

客户端
安装使用:

mount -v -t nfs -o proto=tcp,port=2049 raspberry.local:/srv/anonymous ~/ranonymous
mount -v -t nfs -o rsize=32768,wsize=32768,proto=tcp,port=2049,sec=sys raspberry.local:/srv/home/user1 ~/ruser1

结果时间 ls /分享

user1@mac:[ 6:13]$ time ls ranonymous/
a1        putty.zip test

real    0m0.013s
user    0m0.002s
sys     0m0.004s
user1@mac:[ 6:13]$ time ls ruser1/
a1        a2        a3        a4        a5        me        me copy   myScripts you       you1      you2      you3

real    0m6.044s
user    0m0.002s
sys     0m0.004s

更新 我已经找到了解决速度慢的部分原因ls,这与颜色的使用有关。通过export CLICOLOR=1在我的 bash 配置文件中进行注释,我现在的速度恢复正常了。这很遗憾,因为我确实希望我的终端有颜色。

1)为什么这个问题只发生在 NFSv4 上?
2)为什么这个问题只影响根文件夹而不影响子文件夹,即使颜色仍然打开,我也能非常快速地列出子文件夹。3)有没有办法设置我的 bash 配置文件,以便在不使用不同命令的情况下列出本地文件夹时有颜色,但在列出共享时没有颜色?
4)是否有可能在不牺牲颜色的情况下实现快速性能?

我还有另一个相关问题:在终端中,我根据挂载点访问共享驱动器(〜/ruse​​r1)。然而,在 Finder 中,挂载点被重命名为(〜/用户1),服务器共享的基目录。有没有办法让它保持一致?

相关内容