CDN加速

挂载工具

更新时间:2021-06-17 14:16:19

WosGateway

WosGateway(存储网关)是网宿自研的高性能网关工具,支持缓存功能、NFS共享、SMB共享,适用于本地读写要求高的混合存储场景。

安装(centos环境)

  1. 下载安装包解压到本地目录下,wosgw下载地址
  2. 解压wosgw-*.zip包
  3. cd wosgw-*进入目录,执行rpm -ivh *.rpm安装
  4. 如果有依赖错误,需要执行 yum -y install fuse fuse-libs libibverbs librdmacm gperftools-libs解决.
  5. 如果提示leveldb依赖缺失,可按一下方式安装
wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-13.noarch.rpm
rpm -Uvh epel-release-7-13.noarch.rpm
yum -y install leveldb
  1. 安装成功后,将生成以下文件和目录
二进制路径 /usr/bin/wosgw
配置文件 /etc/wosgw/wosgw.conf
日志路径 /var/log/wosgw
运行目录/var/run/wosgw
DB路径 /var/run/wosgw/db

配置

1、配置文件 /etc/wosgw/wosgw_ctl.toml

[wosgw_ctl]
#访问集群所需access key
AK          = "your ak"
#访问集群所需secret key
SK          = "your sk"
#集群地址
server      = "http://endpoing"
#存储使用的bucket
bucket      = "regionName"
#本地挂载目录
mount_dir   = "/mnt/xxx"
#本地缓存目录
use_cache   = "/cache5/s3fs_cache"


conf_path   = "/etc/wosgw/wosgw.conf"
client      = "client.wosgw"


[params]
args = [
    "-o enable_noobj_cache",
    "-o ensure_diskfree=300",
    "-o use_xattr",
    "-o allow_other",
    "-o umask=000,noatime",
    "-o force_purge_rocksdb_stat",
    "-o use_path_request_style",
    "-o curldbg",
    "-o dbglevel=dbg",

params配置说明

配置名 是否必配 配置实例 备注
allow_other 必配 -o allow_other 默认固定选项,本参数用于设置挂载目录可以被任意登陆服务器的用户使用,且可以将挂载目录用于创建 NFV/SMB 共享
rw 必配 -o rw 表示可读写
umask 必配 -o umask=000 本参数用于设置挂载后的资源访问权限,当设置 umask = 000 时对于文件的权限为 777(可读可写可执行)
noatime 必配 -o noatime 没有 access time 的统计,都为0
use_cache 必配 -o use_cache=/root/xiaoyb/wcsoss_test/cache 指定存储网关的缓存路径地址
ensure_diskfree 可选 -o ensure diskfree=300 表示磁盘至少预留 300M 空间用于确保磁盘有足够的预留空间供文件写入,对于存储网关来讲已经默认预留了磁盘容量的 20%,此选项可不配置
use_xattr 必配 -o use_xattr 表示支持设置文件扩展属性
use_path_request_style 建议配 -o use_path_request_style 使用路径访问方式,当 URL 为 IP 时挂载命令必须使用此参数,否则会报域名解析错误
enable_noobj_cache 必配 -o enable_noobj_cache 配置本参数后,将减少 WOSGW 发送的列举桶的请求,从而提升性能
max_stat_cache_size 建议配 -o max_stat_cache_size=1000000 默认10W,内存中可保存的 stat 缓存最大条目数,一般建议配置更大性能会更佳
force_purge_rocksdb_stat 必配 -o force_purge_rocksdb_stat 强制数据库清除,用于保证数据一致性
dbglevel 可选 -o dbglevel=debug debug 用,一般不建议配置
multipart_size 可选 -o multipart_size=10 设置单个分片的大小
max_multipart_cnt 可选 -o max_multipart_cnt=10000 设置最大分片数的大小

2、新增配置文件/etc/wosgw/wosgw.conf,按需配置以下信息(注:如全不需要配置可不添加该配置文件)

wosgw_run_mode=async
debug_wosgw=60
wosgw_rgw_host_regex = ".*"

wosgw_cachefile_life_time=1
wosgw_cachefile_remove_size=200
wosgw_cachefile_remove_interval=2
wosgw_cachefile_remove_thread_num=2
wosgw_cachefile_quantity_watermark_high=0
wosgw_cachefile_quantity_watermark_low=0
wosgw_cachefile_gc_thread_num=3

wosgw_db_path=/cache2/wosgw-db

wosgw_stat_mode=1

wosgw_sync_log_interval=10
wosgw_num_shards=5
wosgw_sync_sleep_time=0

wosgw_resume_upload=True

wosgw_vid_prealloc=100

[client.wosgw.default]
log file=/cache2/wosgw-log/$name.log
admin socket = /usr/local/etc/wosgw/$name.asok

wosgw配置说明

配置名 是否必配 配置实例 备注
wosgw_run_mode 必配 wosgw_run_mode=async 默认值为 async,服务运行模式为异步方式,即写入挂载目录的文件会先存在本地缓存盘,然后才会同步至后端
wosgw_stat_mode 可选 wosgw_stat_mode=1 默认值为 1,配置元数据存储方式,即元数据落盘到本地
wosgw_db_path 可选,不建议配置单 db 的方式 wosgw_db_path=/root/xiaoyb/wcsoss_test/db 异步工作模式时,配置数据库存储路径,不建议配置单 db 的方式
wosgw_log_db_path 必配 wosgw_log_db_path=/root/xiaoyb/wcsoss_test/db_log 无默认值,必须配置,异步日志 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响
wosgw_stat_db_path 必配 wosgw_stat_db_path=/root/xiaoyb/wcsoss_test/db_stat 无默认值,必须配置,元数据 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响
wosgw_lc_db_path 必配 wosgw_lc_db_path=/root/xiaoyb/wcsoss_test/db_lc 无默认值,必须配置,缓存文件 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响
wosgw_fault_db_path 必配 wosgw_fault_db_path=/root/xiaoyb/wcsoss_test/db_fault 无默认值,必须配置,分片 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响
wosgw_cachefile_life_time 可选,建议配置 wosgw_cachefile_life_time=1 默认值为 24,单位 H, 用于标记缓存文件的超期时间,有效范围 [0.00028, 2^20]
wosgw_cachefile_remove_size 可选,可维持默认 wosgw_cachefile_remove_size=200 默认值为 100,单位为 M,用于设置满足缓存清理条件后一次尝试清理的总文件大小,有效范围 [100, 2^31-1]
wosgw_cachefile_remove_interval 可选 wosgw_cachefile_remove_interval=2 默认值为 2,单位为 s,用于设置磁盘水位的检查间隔,有效范围 [2, 2^31-1]
wosgw_cachefile_remove_thread_num 可选 wosgw_cachefile_remove_thread_num=2 默认值为 2,单位为个,设置清除缓存的线程的个数,有效值 [2, 32]
wosgw_cachefile_quantity_watermark_high 可选 wosgw_cachefile_quantity_watermark_high=0 默认值为 0.7,设定磁盘检查的高水位比例,磁盘占比到达高水位后就会触发清理机制工作,有效值范围 [0, 0.8]
wosgw_cachefile_quantity_watermark_low 可选 wosgw_cachefile_quantity_watermark_low=0 默认值为 0.6,设定磁盘检查的低水位比例,磁盘占比低于低水位时不会触发清理机制工作,有效值范围 [0, 高水位线]
wosgw_cachefile_gc_thread_num 可选 wosgw_cachefile_gc_thread_num=3 默认值为 16,设定删除缓存文件记录的线程个数,单位为个,有效值范围 [1, 32]
wosgw_cachefile_remove_count 可选 wosgw_cachefile_gc_thread_num=10000 默认值为 10W,设定满足清理条件时,如果文件总大小达不到设定,则会一次尝试移除的文件总数量
wosgw_sync_log_interval 可选 wosgw_sync_log_interval=10 默认值为 120, 单位为 s,异步日志处理的间隔,即 操作日志生成后隔多久才去做同步到后端的操作,有效值范围为 [10, 2^31-1]
wosgw_num_shards 可选 wosgw_num_shards=5 默认值为 5,单位为个,处理异步日志的线程个数,实际上不能设置过多否则会有问题,一般最大设置 CPU 核数的 2 倍就可以了,有效值范围为 [1, 2^31-1]
wosgw_sync_sleep_time 可选 wosgw_sync_sleep_time=0 默认值为 30, 单位是 s,设置当后端无法连接时,同步远端的操作尝试会等待多久,有效值范围 [1, 2^31-1]
wosgw_resume_upload 可选 wosgw_resume_upload=True 默认值为 False(关),设置断点续传功能的开关,有效值范围 [True, False]
wosgw_vid_prealloc 可选 wosgw_vid_prealloc=1024 默认值为 1024,设置插入日志的版本号的分配步长,可能对性能有影响,不影响功能表现,建议维持默认
debug_wosgw 不建议配 ebug_wosgw=60 设置存储网关实例的日志打印等级,默认为1
log file 建议配置 log file=/root/xiaoyb/$name.log 设定存储网关实例的日志路径
admin socket 建议配置 admin socket = /root/xiaoyb/$name.asok 设置存储网关实例的 socket 存放路径
wosgw_rgw_host_regex 不建议配 wosgw_rgw_host_regex=.* 程序用于检查 server 配置的正则语句,维持默认配置就行,默认配置支持 IP|域名:Port的格式
wosgw_load_multi_thread_enable 不建议配 wosgw_load_multi_thread_enable = False 默认值为 False(关),设置初始化bucket多线程的开关,有效值范围 [True, False],目前s3上层不支持多线程
wosgw_load_max_thread_num 不建议配 wosgw_load_max_thread_num = 100 默认值为 20,单位为个,设置多线程拉取的个数
wosgw_fullsync_threads 可选 wosgw_fullsync_threads = 10 默认值为 5,单位为个,设置故障时全量同步线程的个数
wosgw_multi_copy_source_size 可选 wosgw_multi_copy_source_size = 100 默认值为 128,单位为M,用来设置multipart_copy的每一片大小,防止单片尺寸过大超时,如果还是超时,可以适当调小
wosgw_rename_max_file_num 可选 wosgw_rename_max_file_num= 10000 默认值为 100000,单位为个,当文件夹内包含的文件+文件夹数量超过设定值时会mv失败

启动

  1. 启动
wosgw_ctl -action start
  1. 停止
wosgw_ctl -action stop

Goofys

概览

Goofys是一款开源的工具,支持将S3存储桶挂载到本地文件系统中

安装步骤(以centos为例)

1、下载goofys wget https://github.com/kahing/goofys/releases/latest/download/goofys
2、给goofys文件添加执行权限chmod 755 goofys
3、添加证书文件

vim ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY

4、启动挂载指令

./goofys --endpoint http://s3-cn-south-6.wcsapi.com --region cn-south-6 yourBucketName /mnt/mount

注1:/mnt/mount目录需要提前创建,否则会挂载失败
注2:可通过bucket:prefix方式指定挂载到目录级别

5、检查是否挂载成功

mount
> bucket on /mnt/mount type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)