将阿里云oss挂载到本地服务器
概述
由于备份需要用到阿里云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及以上版本。
- 下载安装包(以CentOS 7.0 (x64)为例)
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
- 安装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
- 配置账号访问信息
将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
- 将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