【玩转腾讯云】使用 COSFS 挂载 COS 到云服务器节约空间

本文将介绍使用 COSFS 工具 将 WordPress/NextCloud 的文件目录挂载到 COS 存储桶的方法,以达到节约服务器硬盘空间的目的。

Wordpress 的数据存放在安装目录下的 wp-content/uploads 文件夹,里面存储着网站的媒体文件,占据的磁盘空间特别大。

Nextcloud 的数据存放在安装目录下的 data 文件夹 里面存储着网站的媒体文件,占据的磁盘空间特别大。

为了节省磁盘空间,就将腾讯云对象存储(COS)挂载到他们的数据目录下,存储数据文件。

在挂载 COS 前,必须备份好数据,做好服务器镜像。

我就遇到过挂载好 COS 并重启服务器之后无法连接服务器的状况。

下面以 Ubuntu 18.04.1 LTS 系统为例,说明挂载方法。

【官方文档】

工具指南 - COSFS 工具

工具问题 - COSFS 工具

【参考文章】

腾讯云COS更加极客的玩法

如何实现0770挂载权限

linux 查看用户的uid,gid

一、准备环境、安装并编译 COSFS

1、安装依赖软件

sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config fuse

2、获取源码

git clone https://github.com/tencentyun/cosfs /usr/cosfs

在下载源码的时候,网速特别慢,所以我选择本地下载,然后上传到服务器。 本地下载

3、编译和安装 COSFS

cd /usr/cosfs
./autogen.sh
./configure
make
sudo make install
cosfs --version  #查看 cosfs 版本号

如果显示以下内容,说明安装正确

Tencentyun Object Storage Service File System V1.0.16(commit:unknown) with OpenSSL
License GPL2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

二、挂载 COS

1、配置密钥文件

在 etc 文件夹下新建文件,命名为 passwd-cosfs ,并写入以下内容。

官方给的格式如下

<BucketName-APPID>:<SecretId>:<SecretKey>

官方给的示例如下

examplebucket-1250000000:AKIDHTVVaVR6e3:PdkhT9e2rZCfy6

如果需要挂载多个存储桶,则按照上面的格式多添加几行。

之后将编辑好的内容保存,并将权限改为 640 。

2、运行工具挂载 COS

在运行挂载命令之前,一定要确保被挂载目录的文件夹下没有文件。

如果有文件,可以移动到新建文件夹内,之后将其导入挂载的存储桶内。

如果需要导入存储桶的文件大于 1000 ,那么需要使用对象存储控制台或者软件导入数据,不能在挂载文件夹后使用复制粘贴方法导入数据,否则数据传输慢或出现异常,甚至导致服务器卡顿、死机。

官方给的格式如下

cosfs <BucketName-APPID> <MountPoint> -ourl=<CosDomainName> -odbglevel=info

官方给的示例如下

cosfs examplebucket-1250000000 /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=info -onoxattr

由于一些原因,我自己更改了一些,执行了下面的内容

cosfs examplebucket-1250000000 /mnt/cosfs  -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=crit -ouid=1000 -ogid=1000 -oallow_other -oumask=007 -ouse_cache=/cosfscache/ygwt -omax_stat_cache_size=2000 -oensure_diskfree=10240

解释一下含义

-odbglevel=crit 是调高日志级别,防止日志占用过多空间。

ouid=1000 -ogid=1000 -oallow_other 指定用户读写。

查询方法为

cat /etc/passwd | grep 你的用户名

执行后命令行显示如下内容

www:x:1000:1000::/home/www:/sbin/nologin

x后面的两个数就是uid和gid。

下面的方法也可以查询

id 用户名

-oumask=007 是设定权限为 0770 。

-ouse_cache=/cos/ygwt 是指定缓存文件夹,在之前应新建好文件夹,否则会报错,如果多个存储桶不能共用同一个缓存文件夹。

omax_stat_cache_size=2000 是缓存文件占用空间最大值(MB)。

-oensure_diskfree=10240 当缓存文件所在磁盘,剩余空间不足 10240 MB 大小时,COSFS 将尽量减少使用磁盘空间。

3、设置重启后自动挂载

在 /etc/fstab 文件中写入以下内容

官方给的示例如下

cosfs#examplebucket-1250000000 /mnt/cosfs fuse _netdev,allow_other,url=http://cos.ap-guangzhou.myqcloud.com,dbglevel=info

如果需要挂载多个存储桶,则按照上面的格式多添加几行。

由于一些原因,我自己更改了一些,执行了下面的内容

cosfs#examplebucket-1250000000 /mnt/cosfs fuse _netdev,url=http://cos.ap-beijing.myqcloud.com,dbglevel=crit,uid=1000,gid=1000,umask=007,allow_other,use_cache=/cosfscache/ygwt ,max_stat_cache_size=2000,ensure_diskfree=10240

4、卸载存储桶

当有程序引用文件系统中文件时,进行卸载不会报错,并在没程序引用时完成卸载。

umount -l /mnt

三、可能出现的问题

1、NextCloud 挂载 COS 后出现以下提示

请更改权限为 0770 以避免其他用户查看目录。

解决方法

卸载存储桶后,在挂载的命令中加入以下内容再执行

uid 和 gid 需要自己去查,上面有查询方法的介绍。

-ouid=1000 -ogid=1000 -oumask=007 -oallow_other

在设置重启后自动挂载的代码中加入以下内容

代码之间有逗号,每行代码结尾无逗号

uid=1000,gid=1000,umask=007,allow_other

刷新 NextCloud 界面,不再出现错误提示,界面可以正常显示。

2、WordPress 挂载后网站的图片和视频无法显示

F12 - Network 查看资源加载状态,加载图片时 HTTP 状态码为 403 ,加载视频时状态码为 404 。

解决方法

卸载存储桶后,在挂载的命令中加入以下内容再执行

-oallow_other

在设置重启后自动挂载的代码中加入以下内容

代码之间有逗号,每行代码结尾无逗号

allow_other

重新打开网站,可以正常加载图片和视频。

四、 COS 数据备份

请参考下面这篇文章

【玩转腾讯云】腾讯云COS双重备份-版本控制+跨地域备份

原文地址:https://cloud.tencent.com/developer/article/1614456

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340