Linux
帶有 autofs 自動掛載功能的 NFSv4 僅適用於某些使用者
我安裝了一個 DRBD 分區,使用 Linux-HA 自動安裝,然後它設置綁定並通過 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
我的汽車之家:
* -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
原來這是線索:
rpc.idmapd[5924]: nfsdcb: id '-2' too big!
問題是預設 nfsnobody 使用者的 uid 為 4294967294 ,但在 64 位 CentOS 系統上,它似乎在 32 位上下文中解釋這個數字,導致臭名昭著的 -2。解決方法是:
- 在客戶端和伺服器上將 nfsnobody 使用者/組更改為 uid/gid 65534
- 將伺服器上 uid 4294967294 擁有的所有文件 chown 到 nfsnobody
這解決了問題