OSS挂载及权限配置

2019年9月25日 0 条评论 875 次阅读 0 人点赞

导语

本文章主要介绍了什么是OSS,以阿里云服务为例,介绍OSS如何使用,如何开通以及挂载至Linux,并且配置相关权限。
OSS也可挂载至Windows,但是需要创建云存储网关,

简介


什么是OSS

对象存储服务(Object Storage Service,简称 OSS),是阿一种海量、安全、低成本、高可靠的云存储服务。可以理解为一种形式的网盘,但是又区别于网盘,相比较于网盘功能更多,使用更加灵活,类似于局域网中的NAS。

相关概念

(以下内容摘自阿里云帮助文档)

存储类型(Storage Class):OSS 提供标准、低频访问、归档三种存储类型,全面覆盖从热到冷的各种数据存储场景。其中标准存储类型提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率 1 到 2 次),存储单价低于标准类型;归档存储类型适合需要长期保存(建议半年以上)的归档数据,在三种存储类型中单价最低。详情请参见存储类型介绍

存储空间(Bucket):存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的存储空间来存储不同的数据。创建存储空间请参见创建存储空间

对象/文件(Object):对象是 OSS 存储数据的基本单元,也被称为 OSS 的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的 Key 来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。

地域(Region):地域表示 OSS 的数据中心所在物理位置。您可以根据费用、请求来源等选择合适的地域创建 Bucket。详情请参见 OSS 已开通的Region

访问域名(Endpoint):Endpoint 表示 OSS 对外服务的访问域名。OSS 以 HTTP RESTful API 的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。具体的内容请参见各个 Region 对应的 Endpoint

访问密钥(AccessKey):AccessKey(简称 AK)指的是访问身份验证中用到的 AccessKeyId 和 AccessKeySecret。OSS 通过使用 AccessKeyId 和 AccessKeySecret 对称加密的方法来验证某个请求的发送者身份。AccessKeyId 用于标识用户;AccessKeySecret 是用户用于加密签名字符串和 OSS 用来验证签名字符串的密钥,必须保密。获取 AccessKey 的方法请参见创建 AccessKey

开通


根据上一节的介绍,选择相应的存储类型,比如本站的OSS因为读取次数相对较多,且经常访问,于是选择的就是标准存储。

首先购买资源包,一般是包年包月,也可以按先使用后付费的方式,但是相对来说包年包月划算些。选择和ECS相同的节点,选择需要的容量,然后下单,并准备创建Bucket。

为什么要选择和ECS相同的节点?
因为阿里云的OSS是收费不仅仅是收取存储费用,还有API调用费用以及公网带宽流量费用,如果购买了相同节点的OSS,那么OSS与ECS之间可以以内网传递数据的形式=读写数据,这样节省了成本,降低了延迟。如果是不同节点,那么数据只能走公网传递。

购买了之后接下来创建Bucket,首先给Bucket命名,注意这个命名并不是个人不重复,而是与他人的也不能相同,类似账号。所以请取一个独一无二霸气的名字。

区域和存储类型已经在上面讲到了,就不再赘述。

接下来需要配置Bucket的权限了,这里的权限根据实际情况来配置:

  • 私有:读取和写入文件都需要验证 AccessKey
  • 公共读:任何人可以在不验证AK( AccessKey )的情况下读取,但是写入文件必须验证。
  • 公共读写:无需验证AK,可直接读写文件。

以本站为例,主要是用来存储需要下载的文件,所以这里选择的是公共读,对于其他人相当于只读。

挂载


挂载至Linux可以使用工具“OSSFS”,这个工具可以让OSS像U盘一样挂载至Linux的指定位置,并且可直接访问。

配置方法可以参考阿里云的配置文档:

https://help.aliyun.com/document_detail/32196.html


使用限制

ossfs使用有以下限制:

  • 不支持挂载归档型Bucket。
  • 编辑已上传文件会导致文件被重新上传。
  • 元数据操作,例如list directory,因为需要远程访问OSS服务器,所以性能较差。
  • 重命名文件/文件夹可能会出错。若操作失败,可能会导致数据不一致。
  • 不适合高并发读/写的场景。
  • 多个客户端挂载同一个OSS Bucket时,数据一致性由您自行维护。例如,合理规划文件使用时间,避免出现多个客户端写同一个文件的情况。
  • 不支持hard link。

下载地址

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及以上版本。

1.下载安装包。以下载CentOS 7.0 (x64)版本为例:

wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm

2.安装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

说明 对于使用yum安装rpm包的客户端,如果客户端节点网络环境特殊,无法直接用yum下载依赖包。可以在网络正常的、相同版本操作系统的节点上,使用yum下载依赖包并拷贝到网络特殊的节点。例如,ossfs需要依赖fuse 2.8.4以上版本,可使用如下命令,下载yum源中最新的fuse到本地:
sudo yum install --downloadonly --downloaddir=./ fuse
如果需要下载其他依赖包,则将fuse换成对应包的名称。

  • CentOS5系统版本的安装命令:
sudo yum localinstall your_ossfs_package --nogpgcheck

3.配置账号访问信息。将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

4.将Bucket挂载到指定目录。

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

挂载示例:将杭州地域名称为bucket-test的Bucket挂载到/tmp/ossfs目录下。

echo bucket-test:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs bucket-test /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com

注意 如果您使用从阿里云购买的云服务器(ECS)来提供ossfs服务,您可以使用内网域名,在这个示例中您可以将OSS endpoint 改为oss-cn-hangzhou-internal.aliyuncs.com,这样可以节省流量费用。OSS的内网域名请参考访问域名和数据中心

5.如果您不希望继续挂载此Bucket,您可以将其卸载。

fusermount -u /tmp/ossfs

权限配置


已经挂载到Linux上的某个文件夹后,如果想让WEB访问,会因为全下不足而失败,这个时候如果使用chmod来修改,同样会出现错误。

解决方法很简单,只需要在启动语句后面添加一个参数-o allow_other

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

这样就可以使用chmod命令来修改相关文件夹以及文件的权限了,同样可以使用umask来修改新文件创建时的默认权限。这两个命令的用法请自行百度。

因为这里是挂载至Linux的方式,且AK已经在启动的时候已经载入,所以OSS的Buket无论是哪种模式(私有。公共读或读写),都是可以正常读写的。使用公网域名进行读取时,才根据Bucket权限情况进行判断。

附:WindowsVPS下的挂载

首先需要创建一个云存储网关,然后根据你的ECS来创建虚拟路由器和交换机,

使用配置时选择阿里云节点和文件存储服务;

之后进入到OSS控制面板,绑定创建的网关,并且选择SMB协议进行挂载。

注:同节点下,属于内网挂载。

chao

chao

这个人太懒什么东西都没留下

期待你的神评呦~

avatar
  订阅  
提醒