我的 NFS v4 服务器在 infiniband (IPoIB) 上运行时遇到很多问题,每次负载变高时,nfs 服务器都会锁定,我必须重新启动服务器才能解决问题。我每隔几秒就会收到以下消息:
Message from syslogd@fruster at Jul 14 12:51:54 ...
kernel:BUG: soft lockup - CPU#6 stuck for 22s! [nfsd:15806]
我一直在尝试调试它并找出发生了什么,因此我检查了nfsstat -s
哪些内容正在使用所有带宽:
Server rpc stats:
calls badcalls badclnt badauth xdrcall
241998732 0 0 0 0
Server nfs v4:
null compound
3 0% 242004087 99%
Server nfs v4 operations:
op0-unused op1-unused op2-future access close commit
0 0% 0 0% 0 0% 148697 0% 65006 0% 124611 0%
create delegpurge delegreturn getattr getfh link
3072 0% 0 0% 10373 0% 6028483 2% 120565 0% 0 0%
lock lockt locku lookup lookup_root nverify
0 0% 0 0% 0 0% 52306 0% 0 0% 0 0%
open openattr open_conf open_dgrd putfh putpubfh
90478 0% 0 0% 223 0% 18760 0% 18834351 6% 0 0%
putrootfh read readdir readlink remove rename
65 0% 12579510 4% 4540 0% 5 0% 24848 0% 20232 0%
renew restorefh savefh secinfo setattr setcltid
23413 0% 0 0% 20241 0% 0 0% 1073 0% 66 0%
setcltidconf verify write rellockowner bc_ctl bind_conn
66 0% 0 0% 5716220 2% 0 0% 0 0% 13 0%
exchange_id create_ses destroy_ses free_stateid getdirdeleg getdevinfo
101 0% 159 0% 58 0% 0 0% 0 0% 0 0%
getdevlist layoutcommit layoutget layoutreturn secinfononam sequence
0 0% 0 0% 0 0% 0 0% 0 0% 225439523 83%
set_ssv test_stateid want_deleg destroy_clid reclaim_comp
0 0% 0 0% 0 0% 0 0% 55 0%
正如你所看到的,“序列”使用了 83% 的 NFS 带宽,但我不知道“序列”是什么,而且我在网上找不到它,因为当我搜索“nfsstat -s 输出序列”时,我得到一堆页面告诉我“按顺序执行以下步骤”。
有谁知道“顺序”是什么?如果您对 NFS 冻结的原因有任何建议,那就加分了。
谢谢
答案1
定义如下。
RFC 3530 NFS v4:网络文件系统 (NFS) 版本 4 协议
NFS4ERR_BAD_SEQID
锁定请求中的序列号既不是下一个预期的编号,也不是最后处理的编号。
这nfsstat 的来源不幸的是没有透露更多信息。
7月15日更新: 的可能性错误 651409 - NFS 服务器返回 BAD SEQID 错误消息是这里的罪魁祸首。