在CentOS系统下将OSS对象储存挂载到硬盘

Posted 射线小组

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CentOS系统下将OSS对象储存挂载到硬盘相关的知识,希望对你有一定的参考价值。

CentOS系统下将OSS对象储存挂载到硬盘

本人在利用Nextcloud搭建本站个人网盘的时候,遇到了服务器硬盘空间不够用的情况,鉴于云数据硬盘的成本问题,于是有了采用OSS对象储存的想法。

本站采用了阿里云发布的ossfs工具进行对OSS对象储存的挂载。

阿里云官方对ossfs工具的解释如下(官方参考文档):

ossfs基于s3fs构建,具有s3fs的全部功能。其中包括:

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

  • 使用OSS的multipart功能上传大文件。

  • 支持MD5校验,保证数据完整性。

一、安装ossfs

本站采用CentOS 7系统,在此示例,其他操作系统可参照或者直接参考阿里云官方文档

首先下载安装包终端输入命令:

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

下载后的安装包会默认保存在用户目录,先根据服务器实际情况cd到该目录
本站示例
在CentOS系统下将OSS对象储存挂载到硬盘

再执行安装命令:

sudo yum localinstall your ossfs package

在这里 your ossfs package 为刚刚下载的安装包,根据实际填写,本站示例为

sudo yum localinstall ossfs_1.80.6_centos7.0_x86_64.rpm

二、获取OSS对象储存中Bucket桶的信息

本站使用腾讯云对象储存作为示例
(其他平台类比参考,经实验,阿里云,百度云,京东云,华为云,七牛云都可以成功挂载)

1.首先进入对象储存控制台,注意空间名称和访问域名

在CentOS系统下将OSS对象储存挂载到硬盘

记下之后,备用

2.获取对象储存访问API密匙

在CentOS系统下将OSS对象储存挂载到硬盘

点击密匙管理,腾讯云提示前往「云 API 密钥」进行管理

记下SecretId(密匙ID)和SecretKey(密匙钥)备用

三、配置账号访问信息

将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

此处的my-bucketmy-access-key-idmy-access-key-secret分别为上个操作步骤中获取到的 空间名称;SecretId(密匙ID);SecretKey(密匙钥)在此处按自己实际情况填写

本站示例:

echo raygroup-12********654:AKI*****************KC:rXEk6****************53r > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

四、将OSS对象储存Bucket桶挂载到指定目录

终端输入命令:

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

这里的 my-bucketmy-mount-pointmy-oss-endpoint 分别为刚刚从第二步获得的 访问域名 和 我们想要挂载到的目录

本站实例:
假定我们要将对象储存 raygroup-12********654 挂载到服务器的 /ossfs 目录

ossfs raygroup-12**********654 /ossfs -ourl=cos.ap-shanghai.myqcloud.com

注:如实例,这里的访问目录指的是第二步获得的 访问域名 中,不含 http:// 和 空间名称 剩下的部分,即cos.ap-shanghai.myqcloud.com的地域名称。

(根据腾讯云的官方文档,我们可以了解到这是本站所用腾讯云对象储存在上海的实例名称。)

值得说明的是:

如果我们所挂载的服务器与对象储存处于同一服务商的同一地域(例如使用腾讯云华东2上海的云服务器,腾讯云对象储存上海实例)

我们便可以用服务商提供的内网访问域名,来获得几乎等同于访问真实硬盘的同步速率并且还可以免除对象储存的外网流量。

至此,我们已经完成了对象储存的挂载,来实验一下
终端输入命令:

df -h


我们可以看到,一个腾讯云大小为256T的对象储存已经挂载到了服务器的 /ossfs 目录

五、利用ossfs对挂载的对Bucket桶进行配置

查阅官方文档我们可以得到对于ossfs命令的设置,若无特殊需求,一般情况下默认的配置完全可以正常使用,不需要额外参数。若需要进行配置,我们在这里举例几点常用配置。

本站示例:在我们用ossfs命令对Bucket桶进行配置时,需要遵循其命令格式。

即在挂载Bucket桶时,在挂载载命令后再加上对应的选项

ossfs bucket_name mount_point -ourl=endpoint -o option_name=[option_value]


注:bucket_namemount_pointendpoint的含义与第三步一致
这里的option_name为ossfs命令的选项名称,option_value为选项对应变量。其选项列表和其内容可参阅官方文档

  1. url:用于指定存储空间的访问域名,格式为url=endpoint。当不指定具体的请求协议时,默认选择HTTP。
    示例:

-ourl=https://oss-cn-hangzhou.aliyuncs.com

注:该命令即第三步挂载对象储存时用于指定储存空间访问域名时所使用的命令。
  1. 在挂载时指定uid和gid参数
    示例:

ossfs bucket_name mount_point -ourl=endpoint -ouid=uid -ogid=gid

注:这里的uid为对应用户id,gid为对应拥有者id
  1. 如果我们不需要oss挂载时,可以利用ossfs命令取消挂载。

    终端输入命令:

fusermount -u /mount_point

注:这里的mount_point指的是之前所挂载的目录。

若想与作者交流,请点击“阅读原文”

以上是关于在CentOS系统下将OSS对象储存挂载到硬盘的主要内容,如果未能解决你的问题,请参考以下文章

centos怎么把硬盘挂载到根目录

阿里云主机centos系统如何挂载和扩展多块硬盘(非目录挂载)步骤

CentOS7挂载NTFS格式的硬盘

CentOS 硬盘挂载与解挂

Oss挂载Nextcloud存储网盘

Centos(Linux)系统下实现挂载硬盘