Linux挂载阿里云对象存储OSS作为本地磁盘扩充空间备份网站

leeknives 2017-09-25

p.s.挂载oss之后,使用rsync可以同步图片数据,非常方便

官方教程: https://bbs.aliyun.com/read/307212.html
本文来源: http://www.xxorg.com/archives/4450

  醒醒的服务器VPS折腾小站使用阿里云的VPS安装Linux的CentOS,可悲的是最小带宽的,只有1M的带宽,想从ECS发出去点东西太难了,就说备份网站这点数据都需要很长时间,为了解决这个问题,使用阿里云的OSS可以第成本的解决,使用ossfs挂载OSS到VPS本地,备份的时候只需要存储在挂载后的目录里,跟本地操作一模一样,安全方便,走内网还只需要付存储费用,流量费也不需要。ossfs 能让在Linux系统中把阿里云的OSS bucket 挂载到本地文件系统中,您能够便捷地通过本地文件系统操作OSS 上的对象,实现数据的共享。

一、安装方法

centos各个版本的安装包下载
CentOS 7.0 (x64) 
http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1481699572723/ossfs_1.80.0_centos7.0_x86_64.rpm
CentOS 6.5 (x64) 
http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1481699605023/ossfs_1.80.0_centos6.5_x86_64.rpm
CentOS 5.11 (x64) 
http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1481699644192/ossfs_1.80.0_centos5.11_x86_64.rpm

对于CentOS6.5及以上,安装命令为:

代码
sudo yum localinstall your_ossfs_package.rpm


对于CentOS5,安装命令为:

代码
sudo yum localinstall your_ossfs_package.rpm --nogpgcheck


二、阿里云OSS使用方法
设置bucket name 和 AccessKeyId/Secret信息,将其存放在/etc/passwd-ossfs 文件中,这个文件的权限必须设置正确设置,建议设为640。

代码
echo bucket-xxorg:xxorg-access-key-id:xxorg-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs



将阿里云OSS的bucket挂载
(mount)到指定目录,需要注意下面的 ourl参数如果内网域名不收取上传下载流量费,如果是外网IP不收取上传流量费,但是要收取下载流量费。

代码
mkdir /yun-ossfs 
ossfs bucket-yun /yun-ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com


现在看一下ECS的文件系统里是不是有/yun-ossfs的目录了,后边需要做什么就像本地操作一样,表面上是存储在了本地,实际上已经存储到了阿里云的OSS了,就算VPS重装系统,存储在阿里云OSS里的数据也不会丢,因为存储的成本也不贵,所以醒醒就拿来做备份空间用了。最后附上阿里云OSS的收费标准,虽然在互联网上的对象存储领域不算最便宜的,但是在国内也算有实力的,并且中文资料多

卸载bucket:

代码
umount /yun-ossfs # root user
fusermount -u /yun-ossfs # non-root user


*******************************************
相关问题
*******************************************
p.s.执行ossfs挂载命令的时候出现错误提示如下,过程参考:http://blog.csdn.net/kane_canpower/article/details/70242160

代码
ossfs: Check OSS service failed. Run with -f option for more details.


打开ossfs命令的调试开关

代码
ossfs bucket-yun /yun-ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o dbglevel=debug -f -d > /tmp/fs.log 2>&1


查看日志发现里面有下面的话,意思是请求的时间和当前的时间差异太大

代码
The difference between the request time and the current time is too large.


尝试查看本地时间

代码
[root@storm1 tmp]# date
Wed Apr 19 16:47:47 CST 2017


果然差距一个小时 只需更新同步时间即可

代码
ntpdate cn.pool.ntp.org
19 Apr 15:52:39 ntpdate[71442]: step time server 51.15.41.135 offset -3357.358058 sec


再次挂载成功,可以直接访问 /yun-ossfs

代码
ossfs bucket-yun /yun-ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com


ossfs提供的功能和性能和本地文件系统相比,具有一些局限性。具体包括:
        随机或者追加写文件会导致整个文件的重写。
        元数据操作,例如list directory,性能较差,因为需要远程访问oss服务器
        文件/文件夹的rename操作不是原子的
        多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。
        不支持hard link。
        不适合用在高并发读/写的场景,这样会让系统的load升高

相关推荐