问题
由以下可以看到,用户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,可以通过升级小版本解决。