oss
oss

阿里云对象存储( Object Storage Service,简称 OSS ),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。

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

注:OSSFS 并不限制一定要阿里云的机器才可以使用。

本教程基于如下产品:

  • 系统:Centos 7.3
  • 服务:阿里云 OSS
  • VPS:阿里云 ECS
  • 项目:「OSSFS」

创建 Bucke

新建一个 Bucke,「OSS 控制台」

  1. 命名随意。
  2. 阿里云的用户请选择与 ECS 相同的地域,其他服务商的用户随意。
  3. 储存类型此处以标准储存为例。
  4. 读写权限:非公共访问请选择 私有,用于公共访问请选择 公共读
  5. 非阿里云 ECS 或 ECS 和 OSS 不同地域使用请记录下 EndPoint 的地址「节点地址」。

访问权限控制

因为默认账户的 Access Key & ID 含有账户全部的控制权限(不推荐使用),所以创建一个只有 OSS 控制权限的 Access Key & ID。

打开 「访问控制 RAM 控制台」,添加用户名(可随意),按下图给予权限,待验证后将会显示 Access Key & ID,请注意保存,因为只显示一次。

信息整理

上方操作完后得到的信息如下:

注: 1. 节点地址:ECS 与 OSS Bucke 同地域时请使用内网地址,ECS 与 OSS Bucket 不同地域或非阿里云机器请使用外网地址。「访问地址查询」 2. 因为我的是阿里云的机器,所以这里用的是内网访问地址。 3. 特别注意,访问域名是带 http://https:// 的。

配置并启动 OSSFS

打开「此页面」选择最新版对应的安装包下载。

鉴于国内环境,建议手动下载后再上传至 VPS。

安装命令:

$ sudo yum localinstall 文件名

# 实际执行:

$ sudo yum localinstall ossfs_1.80.2_centos7.0_x86_64.rpm

设置 Bucket Name、Access Key 和 Access ID 的信息,将其存放在 「/etc/passwd-ossfs」 文件中, 并将权限设置为 640。

$ echo Bucket_Name:Access_ID:Access_Key > /etc/passwd-ossfs
$ chmod 640 /etc/passwd-ossfs

# 实际执行:

$ echo cc-saintw-www:LTAI3izkgVuD0zGV:99Fx3CJ69CXsxSVF6xaZErkTIsdfjm > /etc/passwd-ossfs
$ chmod 640 /etc/passwd-ossfs

创建目录:

# 根据你的实际情况替换路径:

$ mkdir /www/wwwroot/www.saintw.cc/wp-content/uploads

查看用户的 UID 和 GID:

# 以获取 www 用户的 UID /  GID 为例:

$ id www

挂载权限:

权限设置是以 777-设置的数值 来计算的。

例如要挂载权限为 755,则应该填写 022 ( 777-755=022 )。

启动挂载:

$ ossfs Bucket_Name 挂载目录 -ourl=节点地址 -ouid=用户_uid -ogid=用户_gid -oumask=挂载权限 -o allow_other

# 实际执行

$ ossfs cc-saintw-www /www/wwwroot/www.saintw.cc/wp-content/uploads -ourl=http://oss-cn-shenzhen-internal.aliyuncs.com -ouid=1000 -ogid=1000 -oumask=022 -o allow_other

如配置无误,那么此时 OSS 中的 Bucket 已经挂载到您指定的目录下了。

注:挂载前请确保该目录下没有文件。

自启脚本挂载

「/etc/init.d/」 目录下建立文件 ossfs,模版如下:

#! /bin/bash
#
# ossfs      Automount Aliyun OSS Bucket in the specified direcotry.
#
# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.

ossfs Bucket_Name 挂载目录 -ourl=节点地址 -ouid=用户_uid -ogid=用户_gid -oumask=挂载权限 -o allow_other

按照我们的实际信息,应将以下命令加入 「/etc/init.d/ossfs」 中:

#! /bin/bash
#
# ossfs      Automount Aliyun OSS Bucket in the specified direcotry.
#
# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.

ossfs cc-saintw-www /www/wwwroot/www.saintw.cc/wp-content/uploads -ourl=http://oss-cn-shenzhen-internal.aliyuncs.com -ouid=1000 -ogid=1000 -oumask=022 -o allow_other

执行命令,添加执行权限:

$ chmod a+x /etc/init.d/ossfs

如果脚本文件内容无误,那么 VPS 重启后 OSS 中的 Bucket 将会自动挂载到您指定的目录下。

把 OSSFS 启动脚本作为其他服务,开机自动启动。

$ chkconfig ossfs on

常见问题

如有配置问题,请卸载挂载后修改配置:

卸载命令:

umount 挂载路径

# 实际执行

umount /www/wwwroot/www.saintw.cc/wp-content/uploads
  • 文中操作中挂载目录对 root 以及设定的用户有权限。
  • 挂载后目录内容使用的是统一的权限,比如教程中的 755。

ossfs: MOUNTPOINT directory /www/wwwroot/www.saintw.cc/wp-content/uploads is not empty. if you are sure this is safe, can use the 'nonempty' mount option.

以上提示说明挂载目录不为空。


ossfs: unable to access MOUNTPOINT /tmp/odat: No such file or directory.

以上提示说明您未创建该目录。


其他问题请参阅项目 WIKI。