概述
COSFS2 是一款基于 FUSE(Filesystem in Userspace)用户态文件系统框架 开发的高性能客户端,专为腾讯云对象存储 COS 量身打造。产品核心目标是通过本地挂载的便捷方式,实现对 COS 存储的高性能访问,尤其在顺序读写场景中优势显著,可充分释放 COS 高扩展性、低成本、强可靠性与高安全性的核心价值,为用户提供媲美本地文件系统的操作体验。COSFS2客户端工具本身不收取费用,但是用户使用 COSFS2挂载 COS Bucket 可能产生存储费用、读写请求费用等,详见 COS 计费文档。
本产品深度兼容 POSIX 标准,提供完备的文件系统功能支持:
文件与目录全量操作:全面支持文件读写、多级目录管理、软链接创建与访问等基础功能。
数据传输双重保障:内置大文件分块传输优化策略与全链路数据校验机制,兼顾传输效率与数据完整性。
围绕 COS 服务端卓越的读写性能,COSFS2针对性实现关键能力突破:
大文件顺序读写优化:通过端到端读写链路的深度调优,大幅提升大文件顺序读、写的吞吐效率。
小文件并发处理增强:采用数据与元数据缓存分离的高效架构,显著强化海量小文件的并发处理能力。
功能特性
高性能顺序读写:基于内存和磁盘两级的缓存加速,高效的并发和免锁机制,以及高性能网络传输协议,最大化释放 COS 带宽潜力,为 AI 训练以及大数据等场景提供稳定高性能支撑。
智能缓存策略:采用元数据与数据分离式缓存架构:高频访问的小文件元数据常驻内存,实现毫秒级查询响应;大文件数据块采用按需预读与智能加载机制,精准匹配访问节奏,大幅降低远程存储访问延迟,兼顾缓存效率与内存占用平衡。
可观测性支持:支持完善的审计日志体系,同时支持对接 Prometheus,支持多个核心指标如 I/O 吞吐、请求延迟、缓存命中率等的统计和追踪 ,实现系统运行状态的实时监控、告警与追溯,大幅提升运维效率与问题定位能力。
精细化智能流控:内置多维度智能流控策略,支持按操作类型(OP 精度)的精细化流控管理,可灵活调控请求并发度与资源占用阈值,既能避免客户端 CPU / 内存过载,也能防止对云存储资源的过度占用,保障系统整体稳定性与资源利用率最优。
透明化数据访问:支持将 COS 存储桶直接挂载为本地目录(如 /mnt/localDir),用户无需学习专用 API,可通过常规文件路径(如 cp/mv/ 编辑等)直接操作云端数据,实现 “本地操作、云端存储” 的无缝体验,降低业务迁移与使用成本。
适用场景
AI 训练与推理的存储加速:将 COS 挂载为本地目录,结合高效的顺序读写优化技术,满足多卡集群并发读取需求,充分发挥 COS 优势,助力并保证 AI 训练、推理业务、checkpoint 的高效读取和写入,大幅减少模型保存延迟。
大数据处理与自动驾驶:此类新型计算密集型负载,主要涉及顺序和随机读取、顺序写入操作,无需依赖完整的 POSIX 语义。通过高效的写缓存、自适应智能预读算法能够极大提高吞吐量,降低延迟。
文件高性能读写:通过端到端的读写链路优化 I/O 流程,减少 CPU 等待时间,显著降低 CPU 等硬件资源占用。适用于大文件海量吞吐数据处理(如日志分析、视频流处理)场景,同时通过高效的元数据缓存等管理能力,适合科学计算、渲染等小文件 I/O 场景。
兼容部分 POSIX 标准的应用:虽然 COSFS2提供了标准的文件系统接口,但其实现与传统的 NFS 或 CIFS 有所区别,并非完全兼容所有 POSIX 标准。当前版本支持常见的文件操作命令(如 ls、cat、cp 等),能够无缝集成基于文件系统的现有工具链(包括 Python 脚本、Shell 命令等),并可良好支持各类机器学习与深度学习框架,从而有效提升团队的数据管理及使用效率。
运行环境
操作系统 | 系统版本 | 系统架构 | 内核版本 |
Tencent OS (推荐) | Tencent Server OS 2.4 | X86_64、ARM64 | >= 3.10 |
| Tencent Server OS 3.X | X86_64、ARM64 | >= 5.4 |
| Tencent Server OS 4.X | X86_64、ARM64 | >= 6.6 |
CentOS (推荐) | 7.2或更高版本 | X86_64、ARM64 | >= 3.10 |
RHEL | 7.9或更高版本 | X86_64、ARM64 | >= 3.10 |
Ubuntu | 18.04或更高版本 | X86_64、ARM64 | >= 4.15 |
规格限制
权限要求:需确保 secret id、secret key 对目标 COS Bucket 或其前缀(prefix)等相关资源拥有全部权限,否则可能导致挂载失败或功能异常。您需要在 COS 控制台,先进行授权。
存储类型限制:不支持挂载低频存储、归档存储、深度归档存储类型的 COS Bucket。
文件名限制:文件名长度上限255字节(遵循 Linux 限制)。
路径名限制:路径最长支持849字节(COS key 长度限制)。
文件写入限制:新写入的文件会在应用主动 flush 或者文件关闭后才会在 COS 上可见,支持磁盘文件写入模式和内存流式写入模式(默认使用内存流式写入模式):
磁盘文件写入模式:需要使用客户提供的本地磁盘空间,将其作为写缓存目录。并发写入文件数越多,占用的空间越大,写缓存会在文件关闭后释放磁盘空间。
内存流式写入模式:在无法提供磁盘空间,或者磁盘性能受限的情况下,也支持内存流式写入的模式,此模式默认不支持随机写入。流式写入会使用内存来缓存文件内容,边写边上传至 COS,写缓存 buffer 数量和大小均可以灵活配置。
写入文件分块大小:默认是10485760字节(10MB),写入超过该值时采用分块上传到 COS 存储桶中,分块大小可根据业务进行灵活配置,默认最大支持10MB * 10000个分块 ≈ 97.65G 大小的文件。单个文件最大支持限制参见 规格与限制。
文件读取限制:新写入的文件会在应用主动 flush 或者文件关闭后才会在 COS 上可见。如果读取一个正在采用流式写入 COS、尚未关闭的文件,可能导致报错。其它客户端挂载同样的目录,可能不能及时读取到该文件。
文件缓存限制:文件会在后台预读并下载到 cache-dir 配置项对应的目录中,umount 卸载或重启进程时,数据仍然存在于 cache-dir 配置项对应的目录中。新进程无法识别旧进程 cache-dir 配置项对应目录中的数据,需要在每次 umount 卸载或重启进程后主动清理这些数据。
重命名操作:由于 COS 对象存储限制,不支持原子 rename 操作,对于文件和目录,实际执行操作如下:
文件:会先拷贝后再执行远端文件的删除操作。
目录:首先创建目标目录,对源目录下所有子孙文件执行拷贝操作后,再批量执行子孙文件的删除操作,最后删除源目录。默认仅支持对无子孙文件的空目录进行重命名,可通过配置项 rename-dir-limit 调整目录重命名时的子孙文件数量限制,若数量超过该限制,则禁止对该目录进行重命名。
并发写入一致性:多客户端同时挂载同一 Bucket 并写入同一文件时,无法保证数据一致性。不建议多个客户端并发写入同一个文件。
POSIX API 兼容性:部分兼容,具体请参见 POSIX API 支持情况。
POSIX API 支持情况
功能分类 | 操作/功能 | COSFS2 |
文件基础操作 | open | 支持 |
flush | 支持 | |
close | 支持 | |
文件读写 | read | 支持 |
write | 支持 | |
truncate | 临时文件写入模式:支持 流式写入模式:不支持 | |
文件元操作 | create | 支持 |
unlink | 支持 | |
rename | 支持 | |
目录操作 | mkdir | 支持 |
readdir | 支持 | |
rmdir | 支持 | |
权限与属性 | getattr | 支持 |
chmod | 不支持(操作不报错,但设置不生效) | |
chown | 不支持(操作不报错,但设置不生效) | |
utimes | 支持 | |
扩展功能 | xattr | 不支持 |
symlink | 支持 | |
hardlink | 不支持 | |
lock | 不支持 |