Curve文件系统元数据持久化方案设计
0 码力 | 12 页 | 384.47 KB | 1 年前文档主要讨论了Curve文件系统元数据持久化方案的设计与实现。首先分析了Redis的AOF机制及其局限性,指出单靠Redis无法保证数据100%不丢失。接着探讨了Redis的高可用和高扩展方案,包括Redis Cluster和Codis。然后分析了Redis与MultiRaft结合的问题,如快照和日志的独立性。最终结论倾向于自己实现持久化方案,详细说明了持久化文件的结构、inode和entry的编码方式,以及利用protobuf序列化的实现。文档还讨论了Redis改造与自实现的权衡,并提出了基于fork子进程的COW机制解决持久化中的读写冲突问题。
Curve支持S3 数据缓存方案
0 码力 | 9 页 | 179.72 KB | 1 年前文档介绍了Curve支持S3数据缓存方案的设计与实现,针对基于S3的daemon版本性能差的问题,提出了通过缓存模块优化写入和读取流程。该方案采用分层缓存设计,包括文件系统、文件、块和数据缓存四层,通过减少对S3的频繁交互来提升性能。详细设计了元数据结构、对象命名规则、读写缓存分离策略以及Write、Read、Flush等流程,旨在解决小IO和顺序操作的性能瓶颈。
Curve元数据节点高可用
0 码力 | 30 页 | 2.42 MB | 1 年前文档详细介绍了Curve元数据节点(MDS)的高可用性实现,主要依赖于etcd的选举机制。通过使用etcd的TTL和CAS机制,MDS节点能够实现主备节点的自动选举和切换。文档重点分析了多种异常情况,包括MDS节点退出、Etcd集群故障、网络分区等,并详细说明了每种情况下的处理流程和影响。最终总结了不同场景下的切换逻辑和可能出现的问题,确保MDS服务的高可用性。
CurveFs 用户权限系统调研
0 码力 | 33 页 | 732.13 KB | 1 年前文档调研了CurveFs用户权限系统,测试了启动问题及权限控制策略,讨论了文件系统权限管理,包括文件类型、权限、特殊权限、默认权限mask、用户组管理、ACL存储与关联、Inode权限校验,以及chmod、chown、setfacl、getfacl接口的实现。结论指出使用`default_permissions`和`allow_other`可实现共享文件系统下的基于内核权限检查的访问控制。
CurveFS方案设计
0 码力 | 14 页 | 619.32 KB | 1 年前文档详细介绍了CurveFS方案的设计,包括背景调研、方案对比、架构设计、关键点和开发计划。CurveFS旨在支持云原生场景下的高性能通用文件系统,基于块存储实现,第一阶段目标是满足数据库场景的文件接口需求。文档对比了多种开源文件系统(如ChubaoFS、MooseFS、FastCFS、CephFS),分析了其性能和可行性,并提出了三种元数据设计方案:基于kv的方案、单机内存元数据方案和分布式元数据方案。最终选择了分级元数据设计,采用dentry和inode两层映射关系,支持文件空间管理、快照功能和高可用性。文档还详细讨论了空间分配策略、索引设计和开发计划。
CurveFS Client 概要设计
0 码力 | 11 页 | 487.92 KB | 1 年前文档详细描述了CurveFS Client的概要设计,包括其向上提供的两层接口:对接FUSE的接口和提供分布式数据库接口的lib库。Client的主要功能包括缓存文件系统元数据、inode和dentry信息,与元数据服务器(metaserver)交互,以及通过块设备客户端实现卷的读写操作。文档还分析了关键接口的设计,如init、lookup、write、read和open,并讨论了缓存淘汰策略和未实现的功能,如硬链接、软链接和某些高级接口。
新一代云原生分布式存储
0 码力 | 29 页 | 2.46 MB | 1 年前文档介绍了分布式存储的发展、分类及其要素,重点对比了Ceph和Curve两种分布式存储系统。Ceph的架构简介及其在块存储中的应用场景和存在的问题,如一致性协议导致的性能差和容量不均衡问题。Curve则通过改进架构,解决了这些问题并实现了高可用性和高可扩展性,适用于数据库、Kafka等中间件场景。文档还介绍了分布式存储的核心要素,包括数据分布、可靠性、数据一致性和可扩展性等,并强调了其在云原生环境下的应用重要性。
Raft在Curve存储中的工程实践
0 码力 | 29 页 | 2.20 MB | 1 年前文档详细介绍了Raft协议在Curve存储中的工程实践,包括Curve块存储和文件存储的实现区别、基于memory和RocksDB的两种存储引擎的特性,以及Curve对Raft协议的优化。重点阐述了Curve块存储中轻量级快照的实现思路,通过记录chunk文件的列表而非实际内容来减少空间浪费和处理压力。文档还介绍了Curve的自动容错和负载均衡机制,确保集群资源的高效利用。
NJSD eBPF 技术文档 - 0924版本
0 码力 | 20 页 | 7.40 MB | 1 年前文档主要介绍了Curve文件系统及其使用eBPF技术优化性能的方法。Curve文件系统通过缓存提升性能,但面临客户端延迟较大的问题。为了解决这一问题,提出了使用Id_preload和eBPF两种方式,其中eBPF可以在内核中直接读取缓存数据,有效降低延迟。文档详细介绍了eBPF基于FUSE的缓存设计,包括map映射、钩子(Hook)和辅助API(Helper API)等技术细节。同时,还展示了如何通过eBPF程序优化TCP初始重传时间(RTO)以提升性能。
Bazel
0 码力 | 6 页 | 4.69 MB | 1 年前文档主要介绍了使用 Bazel 进行 Curve 和 CurveFS 的编译过程,包括升级 Bazel 到 4.2.2 版本,支持 Debian9、Debian10、Debian11 等发行版,以及使用 gcc 和 clang 编译器进行编译的方法。文档还提供了制作镜像的命令示例,并提到了如何在容器内进行编译和测试。
共 39 条
- 1
- 2
- 3
- 4













