跳转至

Linux

本文介绍如何使用Rclone工具,将对象存储MOS挂载到Linux系统。

挂载步骤

安装依赖软件:FUSE

执行以下命令安装依赖软件:

BC-Linux, CentOS:

sudo yum install -y fuse
Ubuntu:
sudo apt install -y fuse

MacOS: macfuse-4.4.2.dmg

安装Rclone

  • 二进制安装 浏览器访问:https://rclone.org/downloads/,找到对应的版本下载

  • 自动安装脚本

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    

配置MOS连接信息

创建用于配置MOS连接信息的文本文件,模板如下:

[MOS]
type = s3
provider = Minio
access_key_id = XXXXXXXX
secret_access_key = XXXXXXXXXXXXXXXX
endpoint = http://s3.mediacloud.imgo.tv
location_constraint =
acl = private

配置项说明

名称 说明 是否必选 备注
MOS 配置项名称,由用户自定义
type 存储类型 值固定为:s3
provider 服务提供商 值固定为:Minio
env_auth 是否开启验证 默认值为:false
access_key_id 用户API认证信息中的AccessID 获取方式参见【附录】-【如何获取用户API认证信息】
secret_access_key 用户API认证信息中的AccessSecretKey 获取方式参见【附录】-【如何获取用户API认证信息】
endpoint 对象存储服务接口地址 获取方式参见【附录】-【如何获取对象存储服务接口地址】;默认采用HTTPS协议。如果需使用不支持HTTPS协议的内网地址,需要在地址前加上:http://
location_constraint 对象存储服务的Location,必须与接口地址相匹配 获取方式参见【附录】-【如何获取对象存储服务接口地址】;该设置仅在创建桶时使用,如无需创建桶,可不设置。
acl 默认权限 默认值:private,可选值: private、public-read、public-read-write、authenticated-read。
storage_class 上传对象时的存储类型 默认值:空(使用桶的默认存储类型),可选值:空、STANDARD、GLACIER、STANDARD_IA。

挂载MOS

挂载的命令如下:

sudo mkdir -p /mnt/mos
sudo rclone mount MOS:test-bucket /mnt/mos --daemon --allow-other --config /opt/rclone/rclone.conf --cache-dir /tmp/rclone --vfs-cache-mode writes
其中:

  • /mnt/mos:挂载到本地的文件夹路径,该文件夹必须存在,且必须为空;
  • MOS:自定义的连接别名;
  • test-bucket:需要挂载的桶名;
  • 挂载命令的参数,详细说明请参考【附录】-【挂载命令参数说明】。
  • 挂载成功后,用户即可浏览桶中的文件,并且可以进行上传、下载、新建和删除等常用操作。

提示

  • 需要挂载的桶名可以不设置。此时用户所有的桶都将以文件夹的形式列出。
  • 全局资源池不支持此模式,每个桶都需要单独挂载;
  • 若对存储桶对应的文件夹进行删除操作,无论存储桶是否存在文件,桶都将会被删除,请谨慎操作。
  • 若对存储桶对应的文件夹进行改名操作,会导致MOS存储桶名称发生改变,并且桶的设置会丢失,请谨慎操作。
  • 如果执行挂载命令的进程(包括重启电脑)结束,挂载操作就会终止。
  • 如果挂载操作是以后台进程的方式执行(–daemon),可通过以下命令结束挂载: sudo fusermount -u /mnt/mos,其中“/mnt/mos”为挂载的路径。

设置开机自动挂载

由于执行挂载命令的进程一旦被结束后(包括重启电脑),挂载将会终止。

因此可以通过设置自启动,实现服务器启动后自动挂载的目的。

设置步骤如下:

  • 创建配置文件

在目录"/etc/systemd/system/"下创建挂载配置文件(mnt-mos.mount),模板如下:

[Unit]
After=network-online.target
[Mount]
Type=rclone
What=MOS:test-bucket
Where=/mnt/mos
Options=rw,allow_other,args2env,vfs-cache-mode=writes,config=/opt/rclone/rclone.conf,cache-dir=/tmp/rclone

注意

  • What:需要挂载的MOS配置别名和桶名;
  • Where:挂载路径,并且文件名mnt-mos.mount必须和挂载路径匹配(路径中的"/"替换成"-");
  • Options:挂载命令的参数,详细说明请参考【附录】-【挂载命令参数说明】。

在目录"/etc/systemd/system/"下创建挂载自动配置文件(mnt-mos.automount),模板如下:

[Unit]
After=network-online.target
Before=remote-fs.target
[Automount]
Where=/mnt/mos
TimeoutIdleSec=600
[Install]
WantedBy=multi-user.target

注意

  • Where:挂载路径;自动挂载配置的文件名必须和挂载配置的文件名相同。
  • 开启自动挂载:

    sudo ln -s /usr/bin/rclone /sbin/mount.rclone
    sudo mkdir -p /mnt/mos
    sudo systemctl --now enable mnt-mos.automount
    

  • 查看挂载状态:

    systemctl status mnt-mos.automount
    

如需停止自动挂载:

sudo systemctl stop mnt-mos.automount
sudo systemctl disable mnt-mos.automount

挂载参数说明

挂载命令的详细参数如下:

  • --attr-timeout 文件/文件夹的属性的缓存时长 1s

  • --allow-other 允许其它用户访问 无

  • --allow-root 允许root用户访问 无
  • --config 指定配置文件的路径,未指定时将使用默认路径下的配置文件 无 可通过命令"rclone config paths"查看默认值
  • --cache-dir 指定缓存路径 无 可通过命令"rclone config paths"查看默认值
  • --daemon 是否在后台运行 无
  • --dir-cache-time 文件夹结构的缓存时长 5m0s
  • --dir-perms 文件夹的权限 0777
  • --file-perms 文件的权限 0666
  • --log-file 指定日志文件路径 无
  • --no-checksum 上传/下载时不对比 未设置
  • --no-modtime 不读取/写入文件的修改时间 未设置 设置后能够提高性能
  • --no-seek 不允许对文件执行seek操作 未设置
  • --poll-interval 轮询时间,必须和--dir-cache-time保持一致 1m0s 设置为0时关闭
  • --read-only 以只读的方式挂载 未设置
  • --transfers 文件并发上传/下载数目 4 仅当缓存模式为“writes”或“full”时有效
  • --vfs-cache-max-age 文件最大缓存时长 1h0m0s
  • --vfs-cache-max-size 缓存中所有文件最大的总大小 off
  • --vfs-cache-mode 缓存模式,支持:off|minimal|writes|full off off:不使用缓存,文件上传失败后不会重试; minimal:使用最少的缓存,文件上传失败后不会重试; writes:仅上传文件使用缓存,上传失败后会重试; full:读写文件均使用缓存,上传失败后会重试。
  • --vfs-cache-poll-interval 缓存中旧对象的轮询间隔 1m0s
  • --vfs-case-insensitive 匹配文件时,忽略大小写 未设置
  • --vfs-read-ahead 当缓存模式设置为full时,预读可使用的额外缓存大小 无
  • --vfs-read-chunk-size 分块读取文件 128Mi
  • --vfs-read-chunk-size-limit 当设置的值大于--vfs-read-chunk-size时,读取文件时,每个分块使用双倍大小,直到达到该设置的值。 off
  • --vfs-read-wait 开始读文件的等待时长 20ms
  • --vfs-used-is-size 使用rclone的算法计算已使用的大小 未设置
  • --vfs-write-back 使用缓存后,回写文件的时间 5s
  • --vfs-write-wait 开始写文件的等待时长 1s
  • --s3-chunk-size 设置分块上传的单个块大小 80M 使用默认值上传大文件可能会超过最大的1000个块

推荐的参数:

  • --allow-other:允许其它用户访问挂载的目录;
  • --s3-chunk-size: 设置分块上传的单个块大小;
  • --no-modtime:如果不需要关注文件的修改时间,建议打开此选项,以提高网关性能;
  • --vfs-cache-mode:建议开启缓存(设置为“writes”或者“full”),可有效提高网关性能;
  • --cache-dir:缓存目录,当同时执行多个rclone挂载进程时,请设置为不同的目录。