在前面的文章中,我们了解了腾讯云的COS对象存储的挂载,这次我们来了解阿里云OSS对象存储的挂载以及两者的优缺点。
同腾讯云的CVM和COS一样,阿里云的OSS不仅可以挂载在自己的ECS上,也可以挂载在其他的Linux机器上。
建立存储
这里我就不截图了,因为之前我已经建立过了,如果没有建立过的话可以登陆管理后台新建。新建的是注意记住自己的Bucket名称和EndPoint(地域节点),以后需要用到。阿里云的官方OSSFS工具中也有详细介绍。
生成密钥
在密钥管理器中可以新建一个AccessKey密钥,其中记住自己的AccessKey ID和Access Key Secret。类似于腾讯云,如果查看以前的Access Key Secret是需要发送手机号验证码的。同样如果是生产环境,建议使用子账户使用密钥。
同样建议先切换到OSS的实际管理中,在内容管理新建一个文件夹或是上传一个文件,后面方便验证是否成功。
安装及配置
在官方的介绍中,提到了是直接下载软件包模式,而不是git然后编译安装模式,大家可以根据自己的意愿来。我这里就是采用的rpm包模式,不过我是从官方页面给的CDN地址下载的,默认粘贴下载完以后还有小尾巴,不如直接从GitHub中下载。我给出的命令跟自己实际不同,请大家注意。
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.5_centos7.0_x86_64.rpm
或者
wget https://github.com/aliyun/ossfs/releases/download/v1.80.5/ossfs_1.80.5_centos7.0_x86_64.rpm
接下来安装可以才有rpm安装或是yum安装,我都给出命令。
rpm -ivh ossfs_1.80.5_centos7.0_x86_64.rpm
或者
yum localinstall ossfs_1.80.5_centos7.0_x86_64.rpm -y
接下来配置,设置bucket name 、AccessKey ID和Access Key Secret信息,将其存放在/etc/passwd-ossfs 文件中。注意这个文件的权限必须正确设置,建议设为640。
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
将OSS bucket 挂载到指定目录。
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint
截图中的my-bucket为my-bucket,AccessKey ID为faint,Access Key Secret为123。将my-bucket这个bucket挂载到/tmp/ossfs目录下,OSS endpoint是http://oss-cn-hangzhou.aliyuncs.com。
echo my-bucket:faint:123 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com
如果是在自己的ECS上挂载,尤其是OSS节点同样也是杭州,可以将OSS endpoint改为内网域名oss-cn-hangzhou-internal.aliyuncs.com
如果配置错了可以卸挂载。
fusermount -u /tmp/ossfs
最后可以ls查看是否挂载成功。
我这里提示错误:
ls: reading directory /tmp/ossfs/: Input/output error.
经过我分析原因,自己想当然的把OSS endpoint的http改成了https,实际上人家不支持。修改完以后就正确了。以下为我最终显示结果。
高级配置
允许其他程序或用户访问挂载信息
在配置上新增加-o allow_other参数(注意与COS不同),如我上图所示。需要注意的是allow_other是赋予挂载目录其他用户访问的权限,如果您要更改文件夹中的文件权限,请用chmod命令。
设置debug信息
使用在挂载时,加上-d -o f2参数,ossfs会把日志写入到系统日志中。在Cn系统中,在/var/log/messages中。
同时挂载多个OSS bucket
在passwd-ossfs文件中写入多个OSS配置信息即可。支持不同帐号的OSS,在挂载的时候执行多次挂载即可。
减少后台程序扫描文件产生的put与get费用
程序扫描ossfs挂载的目录,会转换成向OSS的请求,如果请求次数很多,会产生费用(1分钱/1万次,如果可以接受的话请忽略)。以updatedb为例,可以通过修改/etc/updatedb.conf让它跳过。具体做法是:
1. 在'PRUNEFS = 后面加上'fuse.ossfs'
2. 在'PRUNEPATHS = '后面加上挂载的目录
设置监视扫描目录程序请见官方FAQ或GitHub上FAQ。
开机自动挂载
类似于腾讯云的COS,基本上就是把名字换换。我这里就只列代码了。
此模式适用于ubuntu14.04, CentOS6.5
在 /etc/fstab 文件中添加如下的内容
ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0
自启动脚本mount模式
此模式适用于CentOS7
首先在/etc/init.d/目录下建立文件ossfs
vi /etc/init.d/ossfs
按i进入编辑模式,将以下代码根据自己情况修改后拷贝进去
#! /bin/bash
#
# cosfs Automount Aliyun OSS Bucket in the specified direcotry.
# chkconfig: 2345 90 10
# description: Activates/Deactivates cosfs configured to start at boot time.
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other
添加执行权限
chmod a+x /etc/init.d/ossfs
添加启动脚本作为其他服务实现开机自启动
chkconfig ossfs on
这样就实现了开机自动挂载OSS。
阿里云OSS与腾讯云COS比较
费用上
腾讯云COS有免费额度。计费时,在中国大陆地区使用COS标准存储的用户,优先抵扣免费额度,超出部分再进行后付费结算。每月可以享受50GB存储空间,10GB外网下行流量,10GB腾讯云CDN回源流量,100万次put跟1002万次get请求。
阿里云OSS没有任何免费额度,但是有40GB存储包每年9元,偶尔也会发一些优惠,例如1T存储包3年只需要99元。我就感觉被套路进去买了这个,买完以后发现用处不大,做做备份吧。100GB以上存储包跟所有流量包,阿里云腾讯云大家自行比价。
功能上
腾讯云支持HTTPS,在配置上直接在参数'ourl='中就可以配置,但是阿里云在访问中支持https,但是挂载上就失败了。
阿里云支持内网单独列举,腾讯云是混在一起,不知道怎么区分。
阿里云在挂载的时候域名采用内网域名的话就内网挂载(oss-cn-hangzhou-internal.aliyuncs.com
)可以减免流量费用,采用外网挂载(oss-cn-shanghai.aliyuncs.com)的话(应该)就是走计费流量。
腾讯云在挂载上的参数更加多一些,功能也更加强大一些。具体可参考腾讯云官方FAQ。
最后给大家看下我在一个机器上同时挂载了OSS跟COS