更新时间:2025-06-30 17:29:50
本章将介绍如何下载安装WOSGateway和Goofys以挂载对象存储
WOSGateway(存储网关)是由CDNetworks开发的一款高性能网关工具,支持缓存功能、NFS共享和SMB共享。它使您能够将对象存储服务(OSS)桶挂载成Linux的本地文件系统,从而让您能像管理本地文件一样处理OSS对象。
请注意,使用WOSGateway需要您的服务器有超过100GB的存储空间用于缓存磁盘。
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
[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 | 设置最大块数。 |
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_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”操作将失败。 |
wosgw_ctl -action start
wosgw_ctl -action stop
Goofys是一个开源工具,可以将S3存储空间挂载到本地文件系统。
vim ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
./goofys --endpoint http://s3-cn-south-6.wcsapi.com --region cn-south-6 yourBucketName /mnt/mount -o allow_other
mount
> bucket on /mnt/mount type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)