COSFS 功能说明

COSFS 工具支持将对象存储(Cloud Object Storage,COS)存储桶挂载到本地,像使用本地文件系统一样直接操作腾讯云对象存储中的对象, COSFS 提供的主要功能包括:

  • 支持 POSIX 文件系统的大部分功能,如:文件读写、目录操作、链接操作、权限管理、uid/gid 管理等功能。
  • 大文件分块传输功能。
  • MD5 数据校验功能。
  • 将本机数据上传至 COS,建议使用 COS Migration 工具 或 COSCMD 工具。

局限性

COSFS 基于 S3FS 构建, 读取和写入操作都经过磁盘中转,仅适合挂载后对文件进行简单的管理,不支持本地文件系统的一些功能用法,性能方面也无法代替云硬盘 CBS 或文件存储 CFS。 需注意以下不适用的场景,例如:

  • 随机或者追加写文件会导致整个文件的下载以及重新上传,您可以使用与 Bucket 在同一个地域的 CVM 加速文件的上传下载。
  • 多个客户端挂载同一个 COS 存储桶时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等。
  • 文件/文件夹的 rename 操作不是原子的。
  • 元数据操作,例如 list directory,性能较差,因为需要远程访问 COS 服务器。
  • 不支持 hard link,不适合高并发读/写的场景。
  • 不可以同时在一个挂载点上挂载、和卸载文件。您可以先使用 cd 命令切换到其他目录,再对挂载点进行挂载、卸载操作。

使用环境

支持主流的 Ubuntu、CentOS、SUSE、macOS 系统。

安装方式

1、根据系统版本选择对应的安装包,目前支持的 Ubuntu 发行版包括 Ubuntu14.04、Ubuntu16.04、Ubuntu18.04、Ubuntu20.04。

#Ubuntu16.04
sudo wget https://cos-sdk-archive-1253960454.file.myqcloud.com/cosfs/v1.0.19/cosfs_1.0.19-ubuntu16.04_amd64.deb
#Ubuntu18.04
sudo wget https://cos-sdk-archive-1253960454.file.myqcloud.com/cosfs/v1.0.19/cosfs_1.0.19-ubuntu18.04_amd64.deb
#Ubuntu20.04
sudo wget https://cos-sdk-archive-1253960454.file.myqcloud.com/cosfs/v1.0.19/cosfs_1.0.19-ubuntu20.04_amd64.deb

2、安装

sudo dpkg -i cosfs_1.0.19-ubuntu16.04_amd64.deb

使用方法

1. 配置密钥文件

在文件/etc/passwd-cosfs中,写入您的存储桶名称(格式为 BucketName-APPID),以及该存储桶对应的 <SecretId> 和 <SecretKey>,三项之间使用半角冒号隔开。为了防止密钥泄露,COSFS 要求您将密钥文件的权限值设置为640,配置/etc/passwd-cosfs密钥文件的命令格式如下:

sudo su  # 切换到 root 身份,以修改 /etc/passwd-cosfs 文件;如果已经为 root 用户,无需执行该条命令。
echo <BucketName-APPID>:<SecretId>:<SecretKey> > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

说明:

您需要将 <> 的参数替换为您的信息。

  • <BucketName-APPID>为存储桶名称格式,关于存储桶命名规范,请参见 存储桶命名规范
  • <SecretId> 和 <SecretKey>为密钥信息,您可前往访问管理控制台的 云 API 密钥管理 中查看和创建。
  • 您也可以将密钥配置在文件 $HOME/.passwd-cosfs 中,或通过 -opasswd_file=[path] 指定密钥文件路径,同时您需要将密钥文件的权限值设置为600。

示例:

echo examplebucket-1250000000:AKIDHTVVaVR6e3****:PdkhT9e2rZCfy6**** > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

2. 运行工具

将密钥文件中配置的存储桶挂载到指定目录,可以使用如下命令行:

cosfs <BucketName-APPID> <MountPoint> -ourl=http://cos.<Region>.myqcloud.com -odbglevel=info -oallow_other

其中:

  • <MountPoint> 为本地挂载目录(例如/mnt)。
  • <Region> 为地域简称, 例如 ap-guangzhou 、 eu-frankfurt 等。更多地域简称信息,请参见 可用地域
  • -odbglevel 指定日志级别,默认为crit,可选值为crit、error、warn、info、debug。
  • -oallow_other 允许非挂载用户访问挂载文件夹。

示例:

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

注意:

  • COSFS 工具为提升性能,默认使用系统盘存放上传、下载的临时缓存,文件关闭后会释放空间。在并发打开的文件数较多或者读写大文件的时候,COSFS 工具会尽量多的使用硬盘来提高性能,默认只保留 100MB 硬盘可用空间给其他程序使用,可以通过选项 oensure_diskfree=[size] 设置 COSFS 工具保留可用硬盘空间的大小,单位为 MB。例如-oensure_diskfree=1024,COSFS 工具会保留1024MB剩余空间。
  • V1.0.5及较早版本的 COSFS,挂载命令为 cosfs <APPID>:<BucketName> <MountPoint> -ourl=<CosDomainName> -oallow_other。

3. 卸载存储桶

卸载存储桶示例:

方式1:fusermount -u /mnt, fusermount 命令专用于卸载 FUSE 文件系统 
方式2:umount -l /mnt, 当有程序引用文件系统中文件时,进行卸载不会报错,并在没程序引用时完成卸载
方式3:umount /mnt, 当有程序引用文件系统中的文件时,进行卸载会报错

常用挂载选项

-omultipart_size=[size]

用来指定分块上传时单个分块的大小(单位: MB),默认是10MB。 由于分块上传对单个文件块的数目有最大限制(10000块),所以对于超出100GB(10MB * 10000)大小的文件,需要根据具体情况调整该参数。

-oallow_other

如果要允许其他用户访问挂载文件夹,可以在运行 COSFS 的时候指定该参数。

-odel_cache

默认情况下,COSFS 工具为了优化性能,在 umount 后,不会清除本地的缓存数据。 如果需要在 COSFS 退出时,自动清除缓存,可以在挂载时加入该选项。

-onoxattr

禁用 getattr/setxattr 功能,在1.0.9之前版本的 COSFS 不支持设置和获取扩展属性,如果在挂载时使用了 use_xattr 选项,可能会导致 mv 文件到 Bucket 失败。

-opasswd_file=[path]

该选项可以指定 COSFS 密钥文件的所在路径,该选项设定的密钥文件需要设置权限为600。

-odbglevel=[dbg|info|warn|err|crit]

设置 COSFS 日志记录级别,可选 info、dbg、warn、err 和 crit。生产环境中建议设置为 info,调试时可以设置为 dbg。如果您的系统日志,未定期清理且由于访问量很大,生成大量日志,您可以设置为 err 或者 crit。

-oumask=[perm]

该选项可以去除给定类型用户,对挂载目录内文件的操作权限。例如,-oumask=755,对应挂载目录的权限变为022。

-ouid=[uid]

该选项允许用户 ID 为 [uid] 的用户不受挂载目录中文件权限位的限制,可以访问挂载目录中的所有文件。
获取用户 uid 可以使用 ID 命令,格式id -u username。例如执行id -u user_00,可获取到用户 user_00 的 uid。

-oensure_diskfree=[size]

COSFS 工具为提升性能,默认使用系统盘存放上传、下载的临时缓存,文件关闭后会释放空间。在并发打开的文件数较多或者读写大文件的时候,COSFS 工具会尽量多的使用硬盘来提高性能,默认只保留 100MB 硬盘可用空间给其他程序使用,可以通过选项 oensure_diskfree=[size] 设置 COSFS 工具保留可用硬盘空间的大小,单位为 MB。例如-oensure_diskfree=1024,COSFS 工具会保留1024MB剩余空间。

如果docker run redis时,查看日志发现警告:

WARNING overcommit_memory is set to 0! Background save may fail under low memory cThe TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

需要在docker run后面加入 --sysctl net.core.somaxconn=1024,如:

docker run --restart=always --name=redis --sysctl net.core.somaxconn=1024 -d -v /etc/redis:/etc/redis -p 6379:6379 redis:alpine redis-server /etc/redis/redis.conf --appendonly yes

如果docker run redis时,查看日志发现警告:

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

需要在服务器上执行 sysctl vm.overcommit_memory=1 或者执行一下语句:

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf \
&& sysctl -p

public int GetGBS(int num1, int num2)
{
	int temp, a, b;
	if (num1 < num2)
	{
		temp = num1;
		num1 = num2;
		num2 = temp;
	}
	a = num1;
	b = num2;
	while (b != 0)
	{
		temp = a % b;
		a = b;
		b = temp;
	}
	return num1 * num2 / a;
}

sysbench是一款测试工具

主要包括以下几种方式的测试:

     1、cpu性能

     2、磁盘io性能

    3、调度程式性能

     4、内存分配及传输速度

     5、POSIX线程性能

     6、数据库性能(OLTP基准测试)现在sysbench主要支持 MySQL,pgsql,oracle 这3种数据库

安装

Debian/Ubuntu安装:

sudo apt-get install sysbench

CentOS/Fedora安装:

sudo yum install sysbench

如果提示“No match for argument: sysbench”,先执行:

yum -y install epel-release

然后在执行安装即可。


测试例子:

sysbench cpu --cpu-max-prime=20000 --threads=2 run

返回结果:

sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 2
Initializing random number generator from current time


Prime numbers limit: 20000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:   734.77

General statistics:
    total time:                          10.0015s
    total number of events:              7350

Latency (ms):
         min:                                    2.62
         avg:                                    2.72
         max:                                   35.68
         95th percentile:                        2.76
         sum:                                19993.60

Threads fairness:
    events (avg/stddev):           3675.0000/0.00
    execution time (avg/stddev):   9.9968/0.00

分层缓存 (Tiered Cache)
启用后自动为源站就近分配最佳回源数据中心(Argo),
后续仅由该数据中心最终响应处理回源请求、静态资源缓存
在访客就近访问Cloudflare边缘数据中心拉取缓存无果时,将会通过Cloudflare私有线路连入之前分配数据中心拉取资源,减少不必要的回源请求,依托Cloudflare各地数据中心之间组建的高速低延迟、高可用互联网络,提高整体访问性能
*该功能已由专项付费服务转为面向所有用户免费可用(需前往缓存管理中手动开启)
*原有Argo付费用户获得额外优化

俄耳甫斯 (Orpheus)
Orpheus 通过实时查找、识别互联网上不可达的路由并引导网络流量绕行,以提高回源请求可达性
*表现为:更少522错误
*已内置为所有用户启用

自动化签名交换管理 Automatic Signed Exchange(SXGs)
一键为网站配置启用 SXG ,使得网站内容更易被Google搜索缓存并在特定时机预读,以提高页面加载速度,改善用户由搜索到最终访问网页的体验
*测试阶段,Pro以上及APO等付费用户可在Speed选项卡下自行申请候补试用

近实时的数据分析&日志 (Live-updating Analytics and Instant LogsIs)
数据分析选择最近30分钟,开启实时更新
即时日志在打开后实时推送(延迟≥2秒)最近访问日志
*实时数据分析&日志面向Pro及以上付费用户可用
*即时日志(Instant Logs)目前需单独申请候补试用

资源加载预提示 (Early Hints)
引入新的 HTTP 状态代码(103 Early Hints),它定义用户浏览器可在服务器还在准备响应数据时预加载那些资源,通过提前准备页面渲染所需资源,来加速页面载入
*预期面向所有用户免费开放,目前测试阶段需在Speed选项卡下自行申请候补试用
*使用时应注意配置好 Link 响应标头(若未配置则由机器学习推导适配)
*Chrome从v95开始实验性地支持Early Hints,其它浏览器厂商陆续支持中

机制
浏览器<-Accept->Cloudflare<-Vary:Accept->源站

工作细节
源站上,为图像文件拓展(目前支持: avif、bmp、gif、jpg、jpeg、jp2、jpg2、png、tif、tiff、webp )设置 Vary:Accept 响应头,申明让Cloudflare进行图像类型转换并缓存

Cloudflare上,目前通过 API 去指定那些文件拓展类型需要进行格式转换(Pro及以上用户可用)

在资源被访问时,根据访客浏览器所申明支持(Accept)的图像文件类型,返回最佳资源类型

API文档
Variants setting

Vary for Images: Serve the Correct Images to the Correct Browsers

var $table = $('.dataTable').DataTable({
	......
	columns: [
		{
			title: 'Action',
			render: function (value, type, row, meta) {
				return '<a href="javascript:;" class="editBtn">Edit</a>';
			}
		},
		......
	],
	......
}).on('click', 'td>.editBtn', function () {
	var tr = $(this).parents('tr');
	var row = $table.row(tr);
	var rowData = row.data();
	......
});