pdf文档 CurveFS Copyset与FS对应关系

383.29 KB 19 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档阐述了CurveFS的元数据管理机制,特别是Copyset与文件系统(FS)的对应关系。CurveFS采用Raft协议确保元数据一致性,通过分片管理inode和dentry,分别依据fsid+inodeid和fsid+parentinodeid进行分片。文档探讨了Copyset的动态调整、FS共享性以及与Topo信息的设计,补充了创建FS、挂载FS、文件操作流程等详细设计,并评估了各组件工作量。
AI总结
# CurveFS Copyset与FS对应关系总结 ## 1. 背景 CurveFS 使用 Raft 作为元数据一致性保证,采用元数据分片管理 inode 和 dentry,分片依据为 `fsid + inodeid` 和 `fsid + parentinodeid`。CurveFS 的元数据分片借鉴了 Curve 块设备的 Copyset 设计,但在分配 Copyset 方式上有所不同,需要动态分配。 --- ## 2. Chubaofs 的元数据管理 Chubaofs 使用 Volume 管理文件系统,每个 Volume 包含若干 Meta Partition 和 Data Partition。 - **Meta Partition 创建**:在创建文件系统时,初始化若干 Meta Partition(最小 3 个,最多 100 个),每个 Meta Partition 管理一定范围的 inode。 - **Meta Partition 管理**:通过选择内存和磁盘使用率较低的节点作为 Meta Node,组成复制组。 --- ## 3. CurveFS 的 Copyset 与 FS 对应关系 ### 3.1 如何获取 InodeID 在创建 Inode 时,未知 InodeID,需通过以下两种方式获取: 1. **思路一**:Client 从 MDS 获取 InodeID 后,根据分片规则确定 Copyset。 2. **思路二**:Client 选择 Copyset 后,由 Copyset 分配 InodeID。 **结论**:采用 **思路二**,Copyset 管理一段 Inode,Client 轮流在 Copyset 上创建 Inode,减少锁开销。 ### 3.2 Copyset 是否共用 FS - **共用方式**:多个 FS 共享 Copyset,通过配置文件限制单个 Copyset 上的 FS 数量。 - **不共用方式**:FS 独占 Copyset,可通过挂载时参数配置。 **结论**:Copyset 由 FS 共用,避免因独占导致 Copyset 数量过多影响性能。 ### 3.3 Copyset 个数是否动态调整 - **Curve 块存储方案**:集群初始化时创建所有 Copyset,采用 Hash 方式分片。 - **Chubaofs 方案**:初始创建少量 Copyset,动态扩展。 **结论**:采用 Chubaofs 方案,初始为 FS 分配少量 Copyset,动态调整 Copyset 数量。 --- ## 4. CurveFS 的 Topo 信息 CurveFS 的 Topo 层级: → Pool → Zone → Server → MetaServer → CopySetInfo - **设计特点**:CurveFS 的 Topo 层级借鉴 Curve 块存储,但将 ChunkServer 替换为 MetaServer。 - **Copyset 创建**:复用 Curve 块存储的创建流程,需优化。 --- ## 5. CurveFS MDS 和 Metaserver 心跳 - **心跳机制**:Metaserver 定期向 MDS 上报状态,MDS 用作调度和状态确认。 - **调度器**: - **CopySetScheduler**:根据 Copyset 分布生成迁移任务。 - **LeaderScheduler**:优化 Leader 分布。 - **ReplicaScheduler**:调整副本数量。 - **RecoverScheduler**:处理副本恢复任务。 **结论**:初期只实现故障恢复相关调度,其他均衡调度待后续开发。 --- ## 6. 详细设计 ### 6.1 创建 FS - MDS 插入 FS 记录,初始状态为 NEW。 - 为 FS 创建默认 3 个 Copyset,若不足则创建新 Copyset。 - 插入 Root Inode 记录,状态改为 INITED。 ### 6.2 挂载 FS 待补充。 ### 6.3 创建文件/目录 待补充。 ### 6.4 Open 流程 待补充。 ### 6.5 读写流程 - **读写流程**:Client 根据 Inode 的元数据读写,修改 Inode 后更新对应 Copyset。 - **变化点**:Inode 修改直接在 Metaserver 上操作,而非 Copyset。 ### 6.6 Topology CurveFS 的 Topo 层级:Pool → Zone → Server → MetaServer → CopySetInfo。 - **设计特点**:Pool 合并 Physical Pool 和 Logic Pool,Copyset 随用随创建。 --- ## 7. 工作评估 ### 7.1 Client 端 待补充。 ### 7.2 MDS 端 待补充。 ### 7.3 Metaserver 端 - 子模块拆分:待补充。 --- ## 8. Inode 和 Dentry 的内存估算 ### 8.1 一台机器上能存放的 Inode 和 Dentry 数量 待补充。 ### 8.2 一台机器上建议的 Copyset 数量 待补充。 ### 8.3 每个 Copyset 建议管理的存储容量大小 待补充。 --- 以上为文档内容的总结,涵盖了 CurveFS 的元数据管理、Copyset 与 FS 的对应关系、Topo 设计、心跳机制、详细设计和工作评估等内容,重点突出了 Copyset 的分片规则、共享策略和动态调整方案。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 7 页请下载阅读 -
文档评分
请文明评论,理性发言.