上個月 Synology 推出了 DSM 4.3 的正式版本, 對於 NFS 加上了 wsize/rsize 的設定 (終於可以改用大一點的數字了), 所以, 就把家裡的 NAS 升級到 4.3. 不過.... 升上去後, 發現預設的連線會變成是用 NFS4, 而在 uid mapping 上頭, NFS4 與 NFS3 的作法似乎不太一樣....
在 DSM 4.3 之後, 使用 no_root_squash 參數時, 在 client 端 mount 起來後, 對於 NFS 下的檔案, 新增檔案的 uid/gid 在 client 會不正確 (除了 nobody 外都變成 root? 不過在 server 端看是正確的), 修改 uid/gid 的動作都會失效.
以 NFS4 的作法, 應該是去設定 idmap.conf 來處理 uid/gid 的轉換, 有 nsswitch (預設), umich_ldap 與 static 的方式. 由於預設的 nsswitch 會有上面說的問題, 我的環境又沒有 ldap, 所以就改用 static 來試.... 結果, 情形有比上面的問題好一些. 所有新增的檔案的 uid/gid 正常沒有問題, 但是修改 uid/gid 的動作雖然不會有錯誤了, 不過結果都變成 4287875 開頭的一個很大的數字(每次好像又不一樣).
到 google 找了半天, 終於看到有人提到 static 方式只有在 Kerberos 下頭才有作用 (還沒玩過, 過一陣子再來試看看).
最後.... 試著在 client 用 NFS3 的方式來 mount (使用 nfsvers=3 參數), 暫時先解決這個問題, 至少回到之前使用的情形下.