文档中心 Object Storage 最佳实践 使用wosGateway/Goofys挂载对象存储数据

使用wosGateway/Goofys挂载对象存储数据

更新时间:2025-06-30 17:29:50

本章将介绍如何下载安装WOSGateway和Goofys以挂载对象存储

WOSGateway

WOSGateway(存储网关)是由CDNetworks开发的一款高性能网关工具,支持缓存功能、NFS共享和SMB共享。它使您能够将对象存储服务(OSS)桶挂载成Linux的本地文件系统,从而让您能像管理本地文件一样处理OSS对象。

请注意,使用WOSGateway需要您的服务器有超过100GB的存储空间用于缓存磁盘。

安装步骤(CentOS环境)

  1. 首先下载安装包并将其内容解压到指定的本地目录。下载链接
  2. 解包wosgw-*.zip包。
  3. 使用命令 cd wosgw- 进入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
  • 数据库路径:/var/run/wosgw/db

配置

  1. 修改主配置文件:/etc/wosgw/wosgw_ctl.toml
[wosgw_ctl]

# 访问密钥凭证
AK = "your ak"
SK = "your sk"

# Endpoint地址
server = "http://endpoint"

# 存储桶名称
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",
]

配置说明

配置项 是否必填 示例 配置说明
allow_other -o allow_other 默认固定选项,允许登录服务器的任何用户使用挂载目录,可以创建NFV/SMB共享。
rw -o rw 表示读写权限。
umask -o umask=000 设置挂载资源的访问权限。当umask = 000时,文件权限设置为777(读、写、执行)。
noatime -o noatime 将值设置为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时,必须在挂载命令中使用该参数以避免DNS解析错误。
enable_noobj_cache -o enable_noobj_cache 配置此参数后,WOSGW发送的桶列表请求数量减少,提高性能。
max_stat_cache_size 推荐 -o max_stat_cache_size=1000000 默认是100,000。设置内存中可存储的最大状态缓存条目数量。建议配置更大值以提高性能。
force_purge_rocksdb_stat -o force_purge_rocksdb_stat 强制清除数据库,确保数据一致性。
dbglevel -o dbglevel=debug 用于调试目的,常规使用不推荐。
multipart_size -o multipart_size=10 设置单个块的大小。
max_multipart_cnt -o max_multipart_cnt=10000 设置最大块数。
  1. 修改高级配置文件/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=asyncV 默认值是’async’,这意味着服务以异步模式运行。写入挂载目录的文件将首先存在于本地缓存磁盘上,然后同步到后端。
wosgw_stat_mode wosgw_stat_mode=1 默认值为1,配置元数据存储模式。决定元数据如何写入本地磁盘。
wosgw_db_path db wosgw_db_path=/cache/db 在异步模式下,设置数据库存储路径。不推荐单独配置数据库。
wosgw_log_db_path wosgw_log_db_path=/cache/db_log 无默认值,必须配置。用于存储异步日志数据库的位置。建议放置于SSD磁盘上(有副本),防止对存储网关性能产生影响。
wosgw_stat_db_path wosgw_stat_db_path=/cache/db_stat 无默认值,必须配置。用于存储元数据数据库的位置。建议放置于SSD磁盘上(有副本),防止对存储网关性能产生影响。
wosgw_lc_db_path wosgw_lc_db_path=/cache/db_lc 无默认值,必须配置。用于存储缓存文件数据库的位置。建议放置于SSD磁盘上(有副本),防止对存储网关性能产生影响。
wosgw_fault_db_path wosgw_fault_db_path=/cache/db_fault 无默认值,必须配置。用于存储分片数据库的位置。建议放置于SSD磁盘上(有副本),防止对存储网关性能产生影响。
wosgw_cachefile_life_time wosgw_cachefile_life_time=1 默认值为24小时。用于设置缓存文件的过期时间,合法范围为[0.00028, 2^20]。
wosgw_cachefile_remove_size wosgw_cachefile_remove_size=200 默认值为100 MB。用于设置达到条件时,清理缓存尝试的总文件大小,合法范围为[100, 2^31-1]。
wosgw_cachefile_remove_interval wosgw_cachefile_remove_interval=2 默认值为2秒。用于设定检查磁盘空间的间隔时间,合法范围为[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 默认值为100,000。设定当满足条件且总文件大小不符合配置大小时,应移除的总文件数量。
wosgw_sync_log_interval wosgw_sync_log_interval=10 默认值为120秒。设定异步日志处理间隔,决定生成操作日志后同步到后端所需的时间,合法范围为[10, 2^31-1]。
wosgw_num_shards wosgw_num_shards=5 默认值为5,设定异步日志处理的线程数量。最大设置不应超过CPU核心数的两倍,合法范围为[1, 2^31-1]。
wosgw_sync_sleep_time wosgw_sync_sleep_time=0 默认值为30秒,设定在尝试同步远程操作之前,等待与后端的连接时间,合法范围为[1, 2^31-1]。
wosgw_resume_upload wosgw_resume_upload=True 默认值为False,启用或禁用断点续传功能,合法值为[True, False]。
wosgw_vid_prealloc wosgw_vid_prealloc=1024 默认值为1024,设定插入日志的版本ID分配步长。这可能影响性能,但不影响功能。建议使用默认值。
debug_wosgw debug_wosgw=60 设置存储网关实例的日志级别,默认是1。
og file log file=/etc/log/$name.log 设置存储网关实例的日志路径。
admin socket admin socket = /etc/log/$name.asok 设置存储网关实例的socket路径。
wosgw_rgw_host_regex wosgw_rgw_host_regex=.* 使用正则表达式语句检查服务器配置。默认配置支持IP
wosgw_load_multi_thread_enable wosgw_load_multi_thread_enable = False 默认值为False,设置初始化桶线程的开关。合法值为[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 MB。设置multipart_copy中每个段的大小,防止单个大小过大导致超时。如果超时持续,请酌情减少此值。
wosgw_rename_max_file_num wosgw_rename_max_file_num= 10000 默认值为100,000。指定在尝试"mv"操作时目录内最大文件和文件夹数量。如果超过此限制,“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
  1. 启动挂载命令:
./goofys --endpoint http://s3-cn-south-6.wcsapi.com --region cn-south-6 yourBucketName /mnt/mount -o allow_other
  1. 验证挂载成功:
mount
> bucket on /mnt/mount type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)
  1. 日志默认打印到syslog。您可以查看不同系统中syslog的配置。例如,CentOS的默认syslog位于:/var/log/message;Ubuntu系统可以执行dmesg命令输出系统日志。
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!