Alluxio执行fuse mount后的权限问题
本文主要介绍alluxio 挂载s3 作为默认ufs,以集群方式启动alluxio,且进行mount的内容,默认mount后,会有一些权限问题,需要额外处理。
默认ufs 配置
复制 conf/alluxio-site.properties.template
为 conf/alluxio-site.properties
,并且做如下修改 :
alluxio.worker.ramdisk.size=1GB |
修改conf/workers
将其他非master节点配置进去。
配置集群
参考官方文档:https://docs.alluxio.io/os/user/stable/cn/deploy/Running-Alluxio-on-a-Cluster.html
Alluxio mount
alluxio有两种mount方式,分别为alluxio fs mount 和 os mount,alluxio fs mount是把一个ufs path mount到alluxio里面,作为alluxio文件系统的一个目录。
而os mount则是把alluxio path mount到物理操作系统上,成为服务操作系统的一个目录。
alluxio fs mount的语法如下:
./bin/alluxio fs mount \ |
比如一个例子:
alluxio fs mount \ |
这个命令可以把对应的bucket的path mount到alluxio的/s3mn2下,可实现统一套alluxio的fs背后支持多个异构文件系统。
另一种是可以把alluxio的path,mount成一个本地的操作系统的path,也就是:
./bin/alluxio-fuse mount /tmp/m2 alluxio:/// |
这个命令可以把alluxio的root目录mount到操作系统的/tmp/m2
下,需要操作系统存在fuse的能力,关于操作系统的依赖,可以参考 hdfs挂载到本地。
但是通过这样的默认挂载,会有一个问题,就是只允许执行mount命令的用户对目录可见,可读,可写,其他用户都没有权限,不但没有权限,连看见mount挂载点的权限都没有,ls的时候会显示这样:
d????????? ? ? ? ? ? m2 |
如果要让其他用户也能看到,需要做额外设置,先看看官方文档:
By default, Alluxio-FUSE mount point can only be accessed by the user
mounting the Alluxio namespace to the local filesystem.
For Linux, add the following line to file /etc/fuse.conf
to allow other users
or allow root to access the mounted directory:
user_allow_other |
Only after this step that non-root users have the permission to specify the allow_other
or allow_root
mount options.
For MacOS, follow the osxfuse allow_other instructions
to allow other users to use the allow_other
and allow_root
mount options.
After setting up, pass the allow_other
or allow_root
mount options when mounting Alluxio-FUSE:
All users (including root) can access the files. |
Note that only one of the allow_other
or allow_root
could be set.
总结下里,就是两点,首先需要修改/etc/fuse.conf文件添加user_allow_other,这样非root用户在mount的时候,才可以设置allow_other。
其次对于挂载的用户,通过-o参数设置allow_other,这样挂载后的目录,就能对其他用户可写可读。
也就是:
./bin/alluxio-fuse mount -o allow_other /tmp/m2 alluxio:/// |
对于2.9.3的alluxio,-o 必须在mount 后,因为这是mount的参数。
扫码手机观看或分享: