我最近设置了一个新的 nfs 服务器,即 proxmox6 VM,以 ceph 作为存储后端。服务器本身速度很快,可以在通过 NFS 导出的本地文件系统上实现 > 300MBytes/sec 的读写速度。但是,在写入方面,NFS 访问速度非常慢:写入文件、删除文件等。我创建了一个大小为 1.5 MB 的测试目录,其中包含约 300 个小文件:
nfsserver# mount|grep krienke
nfsserver:/user2/krienke on /home/krienke type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=x.y.z.a,local_lock=none,addr=x.y.x.z.b)
# Copy via SSH to NFS directory on the nfsserver which NFS-automounts
# /export/user2/krienke on /home/krienke if accessed
client$ time scp -r etc nfsserver:/home/krienke/
real 2m34,598s
# No NFS involved:
client$ time scp -r etc nfsserver:/export/user2/krienke/
real 0m3,932s
您会看到非 NFS 访问和涉及 NFS 的访问之间的执行时间差异。当我从客户端计算机执行 NFS 时也会发生同样的情况。NFS 服务器是一台具有 10GB 以太网的 SLES15SP1 计算机。客户端有一个 1Gbit 接口。在服务器的 eth0 接口上,我看到一个视图丢弃了大约占总传输包的 0.003% 的包,这似乎没有什么可担心的。当在服务器本身上复制测试目录“etc”而不触及 nfs 时,复制命令在按下 ENTER 后立即执行。所以对我来说,这似乎是与 NFS 相关的问题。我可以使用 NFS V3 和 NFS V4 访问重现此问题(服务器导出两者)。与写入不同,从 NFS 读取是可以的。
我在 nfsstat -s -v3 中看到一个相当高的 getattr 值:
Server nfs v3:
null getattr setattr lookup access
4757 0% 9660323 84% 268638 2% 163260 1% 284994 2%
readlink read write create mkdir
396 0% 87230 0% 223067 1% 58621 0% 1799 0%
symlink mknod remove rmdir rename
25 0% 0 0% 40817 0% 903 0% 23826 0%
link readdir readdirplus fsstat fsinfo
0 0% 22242 0% 249358 2% 314048 2% 968 0%
pathconf commit
484 0% 33792 0%
我的问题是到目前为止我还没有发现任何类型的错误配置或类似的东西,我需要一些想法来寻找这个问题的根源?
谢谢 Rainer