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 页请下载阅读 -
文档评分