为什么几乎所有的 NFS 调用都是 syscltid 和 syscltidconf?

为什么几乎所有的 NFS 调用都是 syscltid 和 syscltidconf?

我管理着一个安装有 1 个运行 Ubuntu 12.04 的服务器和 60 个运行 raspbian 的 Raspberry Pi 微控制器的安装。每个 Pi 都从服务器安装一个 NFS 驱动器以读取新代码并存储日志。

我们遇到了严重的网络延迟,服务器的输入和输出字节数急剧增加(500 kB/s 到 8 MB/s)。

在执行 nfsstat 后,我​​注意到几乎所有调用都是“setcltid”和“setcltidconf”。我无法在任何地方找到这些调用的描述(谷歌、man nfs / nfsstat、这里),但有些东西告诉我它们不应该占所有调用的 99.99999%。以下是 nfsstat 输出:

Server rpc stats:
calls      badcalls   badclnt    badauth    xdrcall
79155136   0          0          0          0

Server nfs v3:
null         getattr      setattr      lookup       access       readlink
1       100% 0         0% 0         0% 0         0% 0         0% 0         0%
read         write        create       mkdir        symlink      mknod
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
fsstat       fsinfo       pathconf     commit
0         0% 0         0% 0         0% 0         0%

Server nfs v4:
null         compound
4         0% 79057350 99%

Server nfs v4 operations:
op0-unused   op1-unused   op2-future   access       close        commit
0         0% 0         0% 0         0% 14461     0% 27901     0% 0         0%
create       delegpurge   delegreturn  getattr      getfh        link
0         0% 0         0% 0         0% 93133     0% 36808     0% 0         0%
lock         lockt        locku        lookup       lookup_root  nverify
0         0% 0         0% 0         0% 2927      0% 0         0% 0         0%
open         openattr     open_conf    open_dgrd    putfh        putpubfh
66698     0% 0         0% 2586      0% 8         0% 128989    0% 0         0%
putrootfh    read         readdir      readlink     remove       rename
3998      0% 1810      0% 13        0% 92        0% 0         0% 0         0%
renew        restorefh    savefh       secinfo      setattr      setcltid
10299     0% 0         0% 0         0% 0         0% 370       0% 39754648 49%
setcltidconf verify       write        rellockowner bc_ctl       bind_conn
39689677 49% 0         0% 7319      0% 0         0% 0         0% 0         0%
exchange_id  create_ses   destroy_ses  free_stateid getdirdeleg  getdevinfo
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
set_ssv      test_stateid want_deleg   destroy_clid reclaim_comp
0         0% 0         0% 0         0% 0         0% 0         0%

Client rpc stats:
calls      retrans    authrefrsh
0          0          0

如果有人能提供任何建议我将不胜感激。

答案1

您在客户端上的设置是什么clientaddr?听起来和这个错误

当 clientaddr=0.0.0.0 时,nfsstat -s 显示服务器上的“setcltid”和“setcltidconf”操作快速增加,并且由于写入 v4recovery 信息导致根卷上的 IO 利用率很高。

相关内容