阿里云OSS是对象存储服务,价格也比较便宜,算得上是一个免费的CDN,我们可以利用OSSFS这个工具,将OSS挂载到阿里云ECS服务器上,可以达到存储、备份的目的。当然,最主要的是可以减轻服务器的压力。

OSSFS功能

先补充一下,具体的介绍,我们可以在github项目上查看,地址是:由此直达

ossfs 能在Linux/Mac OS X 系统中把Aliyun OSS bucket 挂载到本地文件 系统中,您能够便捷的通过本地文件系统操作OSS 上的对象,实现数据的共享。

1).支持POSIX 文件系统的大部分功能,包括文件读写,目录,链接操作,权限,uid/gid,以及扩展属性(extended attributes)。

2).通过OSS 的multipart 功能上传大文件。

3).MD5 校验保证数据完整性。

注意事项

ossfs提供的功能/性能和本地文件系统相比,具有一些局限性。具体包括:

1).ossfs只支持linux/mac操作系统。

2).随机或者追加写文件会导致整个文件的重写。

3).元数据操作,例如list directory,性能较差,因为需要远程访问oss服务器。

4).文件/文件夹的rename操作不是原子的。

5).多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。

6).不支持hard link。

因此,如果您需要一个工具让数据快速同步至云端,或者在多台机器之间共享,那么ossfs是一个好选择。如果是数据库等对存储的性能和可靠性要求苛刻的应用,请慎重选择。

OSSFS的安装

SSH连接到服务器,分别执行下面的命令:

wget https://github.com/aliyun/ossfs/releases/download/v1.79.9/ossfs_1.79.9_centos6.5_x86_64.rpm
sudo yum localinstall ossfs_1.79.9_centos6.5_x86_64.rpm

运行与示例

1.设置bucket name, access key/id信息,将其存放在/etc/passwd-ossfs 文件中, 注意这个文件的权限必须正确设置,建议设为640.

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

2.将oss bucket mount到指定目录

ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

3.新建一个Bucket空间,这里我用的我博客测试,命名为xiangtabk


在这里说明一下,因为是新建的Bucket,所以没有任何东西


4.然后我们再指定AccessKeyId


下面是将华北 1 (青岛)bucket名字为xiangtabk,AccessKeyId是IDXXXXXXXXXXXXXXXX, AccessKeySecret是KeyXXXXXXXXXXXXXXXXXXXXX(这里的AccessKeyId和AccessKeySecret请到阿里云查看,本人用XXXXXXX代表了),oss endpoint是xiangtabk.oss-cn-qingdao-internal.aliyuncs.com(内网)挂载到/home/ossfs目录.

Endpoint对照表请访问:OSS开通Region和Endpoint对照表查看.

echo xiaoz:faint:123 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /home/ossfs
ossfs xiaoz /home/ossfs -ourl=xiangtabk.oss-cn-qingdao-internal.aliyuncs.com

取消挂载

直接输入umount /home/ossfs即可

OSS不仅可以通过内网还可以通过公网挂载,如果您在阿里云同时购买了同一个区域的ECS和OSS那么将OSS挂载到内网用于达到文件存储或备份的目的,下面是挂载后的截图,如下:


另外,在官方的介绍页面上看到:如果使用ossfs的机器是阿里云ECS,可以使用内网域名来避免流量收费和提高速度,设置如下:

ossfs my-bucket /tmp/ossfs -ourl=xiangtabk.oss-cn-qingdao-internal.aliyuncs.com

如果您还没有使用过阿里云OSS,而刚好又是使用的阿里云的主机,那么可以试试这个,目前有免费的存储空间,不过不多,后面有可能会收费。