![具有 autofs 自动挂载功能的 NFSv4 仅对部分用户挂起](https://linux22.com/image/517483/%E5%85%B7%E6%9C%89%20autofs%20%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%E5%8A%9F%E8%83%BD%E7%9A%84%20NFSv4%20%E4%BB%85%E5%AF%B9%E9%83%A8%E5%88%86%E7%94%A8%E6%88%B7%E6%8C%82%E8%B5%B7.png)
我使用 Linux-HA 自动挂载了一个 DRBD 分区,然后它设置绑定并通过 NFS 共享目录。这会为用户主目录共享一个目录。
有些用户工作正常,但大多数用户不行,它就挂在挂载文件夹的地方。当我执行 tcpdump 时,我看到:
07:45:16.415649 IP foo.server.com.1002 > nfs.server.com.nfs: . ack 976 win 348
07:45:22.705531 IP foo.server.c.2174542926 > nfs.server.com.nfs: 192 getattr [|nfs]
07:45:22.705643 IP nfs.server.com.nfs > foo.server.com.1002: . ack 1985 win 501
07:45:23.703517 IP nfs.server.com.nfs > foo.server.c.2174542926: reply ok 96 getattr ERROR: Request couldn't be completed in time
07:45:23.703564 IP foo.server.com.1002 > nfs.server.com.nfs: . ack 1072 win 348
07:45:25.053519 IP foo.server.c.2191320142 > nfs.server.com.nfs: 192 getattr [|nfs]
07:45:25.053651 IP nfs.server.com.nfs > foo.server.com.1002: . ack 2177 win 501
07:45:26.051473 IP nfs.server.com.nfs > foo.server.c.2191320142: reply ok 96 getattr ERROR: Request couldn't be completed in time
07:45:26.051522 IP foo.server.com.1002 > nfs.server.com.nfs: . ack 1168 win 348
07:45:31.413431 IP foo.server.c.2208097358 > nfs.server.com.nfs: 160 getattr [|nfs]
07:45:31.413556 IP nfs.server.com.nfs > foo.server.com.1002: . ack 2337 win 501
07:45:32.411393 IP nfs.server.com.nfs > foo.server.c.2208097358: reply ok 76 getattr ERROR: Request couldn't be completed in time
我的 auto.master 看起来像:
/home/users /etc/auto.home --timeout=60
我的 auto.home:
* -fstype=nfs4,rw,nosuid,soft,rsize=8192,wsize=8192 nfs.server.com:/home/&
我的出口:
/nfs4exports 192.168.0.0/255.255.0.0(rw,no_subtree_check,nohide,no_root_squash,fsid=0)
/nfs4exports/home 192.168.0.0/255.255.0.0(rw,no_subtree_check,nohide,no_root_squash)
我的idmapd.conf:
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = bb.int.threatmetrix.com
[Mapping]
Nobody-User = nfsnobody
Nobody-Group = nfsnobody
[Translation]
Method = nsswitch
我正在使用 CentOS 5.4,nfs 版本:
nfs-utils-1.0.9-42.el5 nfs-utils-lib-1.0.8-7.6.el5 nfs4-acl-tools-0.3.3-1.el5
答案1
这就是线索:
rpc.idmapd[5924]: nfsdcb: id '-2' too big!
问题在于默认的 nfsnobody 用户的 uid 为 4294967294 ,但在 64 位 CentOS 系统上,它似乎在 32 位环境中解释此数字,从而导致臭名昭著的 -2 。修复方法是:
- 将 nfsnobody 用户/组更改为 uid/gid 65534客户端和服务器
- 将服务器上 uid 4294967294 拥有的所有文件的权限设置为 nfsnobody
这解决了这个问题