更新时间:2023-05-18 18:01:22
WosGateway(存储网关)是网宿自研的高性能网关工具,支持缓存功能、NFS共享、SMB共享,适用于本地读写要求高的混合存储场景。
【注:使用WosGateway需要客户端提供超过100G的存储空间作为缓存盘】
rpm -ivh *.rpm
安装yum -y install fuse fuse-libs libibverbs librdmacm gperftools-libs
解决.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
二进制路径 /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=/cache/wos-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=/cache/db | 异步工作模式时,配置数据库存储路径,不建议配置单 db 的方式 |
wosgw_log_db_path | 必配 | wosgw_log_db_path=/cache/db_log | 无默认值,必须配置,异步日志 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响 |
wosgw_stat_db_path | 必配 | wosgw_stat_db_path=/cache/db_stat | 无默认值,必须配置,元数据 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响 |
wosgw_lc_db_path | 必配 | wosgw_lc_db_path=/cache/db_lc | 无默认值,必须配置,缓存文件 db 存放位置,且建议放在 SSD 盘上(且做副本),否则存储网关性能会受到影响 |
wosgw_fault_db_path | 必配 | wosgw_fault_db_path=/cache/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=/etc/log/$name.log | 设定存储网关实例的日志路径 |
admin socket | 建议配置 | admin socket = /etc/log/$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失败 |
wosgw_ctl -action start
wosgw_ctl -action stop
Goofys是一款开源的工具,支持将S3存储桶挂载到本地文件系统中
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 -o allow_other
【注:加上-o allow_other参数可允许其它账号使用挂载点】
注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)
6、日志默认打印的syslog,可以参考不同系统syslog的配置获取,如centos的默认syslog为:/var/log/message;Ubuntu系统可执行dmesg指令输出系统日志