将阿里云oss挂载到本地服务器

安素 2020年05月19日 107次浏览

概述

由于备份需要用到阿里云oss,想到可以使用ossfs将oss挂载到本地磁盘,所以写篇文章记录一下

ossfs能让您在Linux系统中,将对象存储OSS的存储空间(Bucket)挂载到本地文件系统中,您能够像操作本地文件一样操作OSS的对象(Object),实现数据的共享。

运行环境

  • Linux系统
    • CentOS 7.0及以上版本
    • Ubuntu 14.04及以上版本
  • fuse 2.8.4以上版本

ossfs是基于fuse用户态文件系统来实现的,所以它只能运行在支持fuse的机器上。阿里云提供了Ubuntu和CentOS系统的安装包,以方便使用。如果需要在其它环境下运行,可以通过源码方式构建目标程序。

  • ossfs支持在阿里云内网以及互联网环境下使用。在内网环境下时,可以选择使用内网访问域名,以提升访问速度和稳定性。
  • 在这里多嘴一句,如果是阿里云服务器使用,可以使用内网访问域名,一是提升访问速度和稳定性,再者是因为oss外网传输下载是需要收流量费的,非阿里云服务器,可以使用公网访问域名挂载oss盘做备份,只上传文件(阿里云oss上传不收取流量费,下载才收)

安装ossfs

下载地址

Linux发行版下载
Ubuntu 18.04 (x64)ossfs_1.80.6_ubuntu18.04_amd64.deb
Ubuntu 16.04 (x64)ossfs_1.80.6_ubuntu16.04_amd64.deb
Ubuntu 14.04 (x64)ossfs_1.80.6_ubuntu14.04_amd64.deb
CentOS 7.0 (x64)ossfs_1.80.6_centos7.0_x86_64.rpm
CentOS 6.5 (x64)ossfs_1.80.6_centos6.5_x86_64.rpm

安装

  • 由于低版本的Linux系统内核版本比较低,ossfs进程在运行过程中容易出现掉线或者其他问题。因此建议您将操作系统升级到CentOS 7.0或者Ubuntu 14.04及以上版本。
  1. 下载安装包(以CentOS 7.0 (x64)为例)
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
  1. 安装ossfs
    • Ubuntu系统的安装命令:
sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi your_ossfs_package
  • CentOS6.5及以上系统版本的安装命令:
sudo yum localinstall your_ossfs_package
  1. 配置账号访问信息
    将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-
    ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
  1. 将Bucket挂载到指定目录。
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

示例

echo 你的bucket名:你的access-key:你的my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /ossbackup
ossfs 你的bucket名 /ossbackup -ourl=http://oss-cn-hangzhou.aliyuncs.com(oss内网或者外网地址)

设置开机自动挂载

echo ossfs 你的bucket名 /ossbackup -ourl=http://oss-cn-hangzhou.aliyuncs.com(oss内网或者外网地址) -oallow_other > 	/etc/init.d/ossfs
chmod a+x /etc/init.d/ossfs
chkconfig ossfs on
systemctl enable ossfs

卸载

如果您不希望继续挂载此Bucket,您可以将其卸载。

fusermount -u /tmp/ossfs

使用限制

ossfs使用有以下限制:

  • 不支持挂载归档型Bucket。
  • 编辑已上传文件会导致文件被重新上传。
  • 元数据操作,例如list directory,因为需要远程访问OSS服务器,所以性能较差。
  • 重命名文件/文件夹可能会出错。若操作失败,可能会导致数据不一致。
  • 不适合高并发读/写的场景。
  • 多个客户端挂载同一个OSS Bucket时,数据一致性由您自行维护。例如合理规划文件使用时间,避免出现多个客户端写同一个文件的情况。
  • 不支持hard link。

更多详细信息请参见Github ossfs