前言

minIO作为一个对象存储服务很适合作为视频、图像的存储后台。但是对象存储的文件操作一般都是通过API、SDK或者Web管理页面来处理,本地操作并不是很有好。为了方便本地操作我们可以使用s3fs-suse将存储桶挂载为本地文件夹,方便查看,管理文件。

安装s3fs

Github:https://github.com/s3fs-fuse/s3fs-fuse
自己的系统是OpenSUSE Leap 15.3,所以直接在软件源中安装

zypper in s3fs

如有需要也可以下载源码安装。

挂载文件

在挂载文件之前,需要先配置认证文件:

echo "ACCESS_KEY:ACCESS_SCRECT" > /etc/passwd-s3fs

然后可以直接挂载存储桶了

存储桶:bucket
MinIO: https://minio.domain.com:9000
Region: cn-north-1
挂载点:/mnt/minio/
s3fs bucket -o use_path_request_style,url=https://minio.domain.com:9000,endpoint=cn-north-1 /mnt/minio/

其中use_path_request_style对于Minio来说是必须的,未指定的话s3fs将以https://bucket.minio.domain.com:9000来访问。
我们可以通过df命令来检查是否挂载成功:

df -Th
文件系统       类型       容量  已用  可用 已用% 挂载点
......
/dev/sda       ext4       916G  105G  765G   13% /mnt/disk1
s3fs           fuse.s3fs  256T     0  256T    0% /mnt/minio

接下来的问题

通过前面的步骤挂载出来的文件出了本人之外都无法读取以及操作:

ls -l /mnt/minio
总用量 2
d--------- 1 root root 0  1月  1  1970 music
d--------- 1 root root 0  1月  1  1970 phone
d--------- 1 root root 0  1月  1  1970 system
d--------- 1 root root 0  1月  1  1970 video

为了正常使用,操作文件,我们还需要指定一些关于权限的选项:

  1. 允许其他用户操作
    /etc/fuse.conf中将user_allow_other解除注释
    并且在挂载命令中指定-o allow_other
  2. 指定挂载用户
    通过-o uid=xxx,gid=xxx来指定用户和组
  3. 指定存储桶中文件权限
    通过-o umask=xxxx来指定文件权限,不过这里的权限数值是做减法。
    如果想将文件权限指定为0755,则umask的值应该为7022,可以简化为umask=022
  4. 指定挂载点权限(可选)
    通过-o mp_umask=xxxx来指定挂载点权限,用法同umask一样

那么我们就可以将挂载命令写为:

s3fs bucket -o use_path_request_style,allow_other,uid=1000,id=100,umask=133,mp_umask=022,url=https://minio.domain.com:9000,endpoint=cn-north-1 /mnt/minio/

则挂载出来的文件就可以满足我们基本的操作需求了

ls -l /mnt/minio/
总用量 2
drw-r--r-- 1 tianliang users 0  1月  1  1970 music
drw-r--r-- 1 tianliang users 0  1月  1  1970 phone
drw-r--r-- 1 tianliang users 0  1月  1  1970 system
drw-r--r-- 1 tianliang users 0  1月  1  1970 video