问题
由以下可以看到,用户wanlin.wang在其拥有的两个文件夹(wanlin与wanlinwang)下均有权限创建与删除文件。
遇到的问题是,从一个文件夹将文件移动到另一个文件夹(从一个qtree移动到另一个qtree),提示Permission denied。
[wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ pwd /projects/project_01 [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ ll total 8 drwxrwx--T 2 wanlin.wang root 4096 Sep 4 11 : 10 wanlin drwxrwx--T 2 wanlin.wang root 4096 Sep 4 11 : 05 wanlinwang [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ touch wanlin/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ touch wanlinwang/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ rm wanlin/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ rm wanlinwang/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ touch wanlin/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ mv wanlin/test.txt wanlinwang/ mv: cannot move 'wanlin/test.txt' to 'wanlinwang/test.txt' : Permission denied |
资料
qtree简介
从10720-tr-4067.pdf(NFS in NetApp ONTAP Best practice and implementation guide)文档可知:在ONTAP,qtree可以认为独立的文件系统。
- 当文件被从一个文件夹移动到同一个volume下的另一个文件夹,文件只是简单地被rename到新名字,不涉及数据的拷贝删除,速度很快。
- 当文件被从一个qtree移动到另一个qtree时,文件需要被拷贝到新位置,因此速度要慢很多。
validate-qtree-export选项
- Enabled:
- Rename in same volume and qtree:
SUCCESS
- Rename in same volume, different qtrees:
EACCESS
- Rename between volumes where qtree IDs differ:
EACCESS
- Rename between volumes where qtree IDs match:
XDEV
- Disabled:
- Rename in same volume and qtree:
SUCCESS
- Rename in same volume, different qtrees:
SUCCESS
- Rename between volumes where qtree IDs differ:
XDEV
- Rename between volumes where qtree IDs match:
XDEV
解决
方法一(workaround):
icinfra-cn::*> vserver nfs show -vserver data_svm01 -fields validate-qtree-export vserver validate-qtree-export ---------- --------------------- data_svm01 enabled icinfra-cn::*> vserver nfs modify -vserver data_svm01 -validate-qtree-export disable |
方法二:
由于参考资料可知,它是bug。因此将版本升级到Fixed版本可以解决。
在我的环境,我将9.14.1升级至9.14.1P7版本。
[wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ touch wanlin/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ touch wanlinwang/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ rm wanlin/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ rm wanlinwang/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ touch wanlin/test.txt [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ mv wanlin/test.txt wanlinwang/ [wanlin.wang @icinfra -cn- 172 - 16 - 0 - 115 project_01]$ |
验证
如图,不会提示Permission denied了。

参考资料
Permission denied while moving files between qtrees when NFS option '-validate-qtree-export' is enabled - NetApp Knowledge Base 这里介绍如何workaround这个问题。
NetApp Support Site 这里介绍它是一个bug,可以通过升级小版本解决。
