说明:
功能概述
GooseFS 写缓存是 GooseFS 分布式文件系统的一项写入加速特性。该特性在原有集群上额外扩展独立的写缓存池,由全闪 SSD 节点组成高性能写入层,客户端数据先写入写缓存池,再由 GooseFS 后台任务异步将数据持久化到 COS,从而实现高吞吐、低延迟的写入体验,并通过多种机制保证数据安全性。
使用写缓存,您可以获取以下收益:
热点数据直接写入 SSD 缓存池,获得高吞吐和低延迟的写入表现。
异步将数据稳定写入 COS,削峰填谷,有效应对业务突发上传流量。
写吞吐基于分布式缓存线性扩展,满足大规模并发写入需求。

工作原理
说明:
写缓存采用读写独立 Worker 池架构。写缓存能力作为 GooseFS 集群的附加属性,需独立开启;读缓存池(LRU)与写缓存池(FIFO)各自独立运行,不互相干扰。
写缓存的完整写入流程如下:
1. 客户端将 Block 数据写入写缓存 Worker,支持多副本写入。
2. 客户端提交持久化任务到 JobMaster,同时记录文件 CRC。
3. JobMaster 将持久化任务分发给 JobWorker。
4. JobWorker 从本地读取数据,上传数据及 CRC 至 COS,由 COS 完成一致性校验。
5. JobWorker 上报任务结果(包含文件 CRC)。
6. JobMaster 确认文件 CRC,更新持久化状态。
注意:
在数据持久化完成之前,未持久化的数据可读,但不可被淘汰。
数据可靠性保障
写缓存通过以下机制保障数据可靠性:
保障机制 | 说明 |
多副本落盘 | 支持配置单副本、双副本、三副本,副本数越多可靠性越高,可根据业务需求灵活选择 |
端到端 CRC 校验 | 客户端接收数据时会计算 CRC,持久化至 COS 时会再次计算 CRC,保证写入数据与持久化数据 CRC 一致 |
Raft 协议 + DB 同步 | 通过 Raft 协议和 DB 同步保证持久化任务信息不丢失,即使节点故障也可继续执行持久化任务 |
不同副本数对应的数据可靠性如下:
副本数 | 数据可靠性 |
单副本 | 99% |
双副本(默认) | 99.999% |
三副本 | 99.9999999%(9 个 9) |
产品规格
写缓存按照实际物理容量售卖,实际业务容量与副本数相关。例如购买30TB写缓存容量,当选择2副本时,实际可缓存的业务容量为15TB;当选择3副本时,实际可缓存容量为10TB。
性能规格
写缓存与读缓存规格一致,提供200MBps/TB的吞吐能力,QPS 与时延的参考性能数据如下(测试场景为单客户端):
是否拆分读写客户端 | 文件大小 | QPS | 时延(ms) | 吞吐(MBps) |
否 | 4KB | 近万级 | ~ 10 | 可平行扩展 |
| 1MB | 近万级 | ~ 10 | |
是 | 4KB | ~ 十万级 | < 10 | |
说明:
若关闭写缓存持久化,QPS 与时延表现会优于上述参考值。
若需进一步提升性能,可 联系我们 协助拆分读写客户端,避免请求穿透至 COS 判断文件是否存在。拆分读写客户端后,QPS 大约性能提升1.6 倍,延迟下降40%。
使用限制
若需修改副本数,需先关闭写缓存,重新配置后再开启。
适用场景
COS 上传毛刺削峰
场景特点: 具有突发上传流量的业务,包括监控日志上传、数据库备份上传、AutoMQ 消息队列持久化、RSS 数据回传、AI Agent 中间结果存储、训练中间数据上传等。
GooseFS 写缓存方案: 按吞吐需求购买容量,通过写缓存池提供稳定的高吞吐写入,通过异步持久化机制完成数据持久化,避免 COS 吞吐限制造成业务瓶颈。
临时数据存储(无需持久化)
场景特点: 上层业务数据可重新计算,且不要求数据持久化的场景,例如训练 checkpoint 临时写入等。
GooseFS 写缓存方案: 使用单副本写缓存且不开启持久化,获得最高写入性能和最低存储成本;同时得益于缓存架构特性,无需管理存储空间,GooseFS 写缓存容量到达上限后通过 FIFO 淘汰先写入数据。
计费说明
相关操作
如需开启写缓存,请参见 创建 GooseFS 集群 中全托管部署模式下的操作,开启写缓存。
如需查询路径级别持久化状态,可使用 GooseFS 命令行工具 执行持久化状态查询命令,详情如下:
命令格式
goosefs fs checkPersist [-R] [-n <N>] <path> ...
命令参数说明
参数 | 说明 | 是否必选 |
<path> | 目标路径,支持多个、支持通配符(与 ls 一致) | 是 |
-R | 递归遍历子目录;不加则仅统计直接子文件 + 子目录(与 ls -R 语义一致) | 否 |
-n <N> | 控制未持久化明细展示条数;可选值:正整数、0(仅打印汇总)、-1(展示全部) | 否 |
输出参数说明
STATE:表示文件持久化状态,各枚举值说明如下:
枚举值 | 说明 |
TO_BE_PERSISTED | 待持久化 |
PERSISTED | 已持久化到 UFS |
COUNT:该状态下的文件数量
PERCENT:该状态下文件数量占
<path>目录下总文件数的比例示例
./bin/goosefs fs checkPersist /gz-cos2/1255CheckPersist: /gz-cos2/1255 (recursive=false, elapsed=0.05s, dirs=0)STATE COUNT PERCENT--------------- ---------- -------TO_BE_PERSISTED 0 0.00%PERSISTED 1000 100.00%--------------- ---------- -------Total 1000 100.00%All files under /gz-cos2/1255 are persisted.