curvefs client删除文件和目录功能设计
325.42 KB
15 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档设计了CurveFS客户端删除文件和目录的功能,解决了当前删除接口中未处理nlink字段和lookup count的问题。该设计引入了Trash机制和Session机制,以实现文件的回收站功能和维护inode的打开状态。通过调研MooseFS和Chubaofs,确定使用Trash机制来存储删除的inode,并在metaserver端实现Session机制来管理客户端的打开状态。设计还包括定期清理Trash中的过期inode以及实现查询工具以管理Trash中的inode。 | ||
AI总结 | ||
## 《CurveFS Client删除文件和目录功能设计》总结
### 背景
- **现状**:当前CurveFS Client在删除文件和目录时,只能简单删除inode和dentry结构,未处理nlink和lookup count,导致功能不完善。
- **需求**:通过研究MooseFS和ChubaOFS,设计解决方案,完善删除功能。
### 相关调研
- **MooseFS**:
- 使用两种机制:Trash和Reserve。
- Trash:文件类型改为TYPE_TRASH,移至回收站,定期清理。
- Reserve:处理文件被打开时的删除,设置TYPE_RESERVED,记录到Reserved链表,等待释放。
- 优点:通过Meta文件系统优雅管理。
- 缺点:复杂,适合单MDS架构。
- **ChubaOFS**:
- 使用freelist记录nlink为0的inode,保留7天,定期清理。
- forget接口处理孤儿inode,设置DeleteMarkFlag强制清理。
- 优点:实现简单,适合现有架构。
- 缺点:可能导致孤儿inode,需运维处理。
### 方案设计思考
1. **Trash机制**:
- **方案**:一个Trash,区分文件和目录类型。
- **实现**:将inode保留在原地,记录时间,便于清理。
- **优点**:简单,适合现有架构。
- **缺点**:查询复杂,需工具支持。
2. **Session机制**:
- **目的**:处理文件被删除时已打开的场景。
- **实现**:Client在open时记录Session,close时移除。icana机制维护打开状态,定期清理无效会话。
3. **删除流程**:
- **文件**:nlink减到0则放至Trash,等待清理。
- **目录**:nlink从2减至0,直接删除,无需Trash。
### 方案设计
- **Trash机制**:
- 记录nlink为0的inode,定期清理超过7天的。
- Trash保存在原地,便于扫描和管理。
- Через工具查询 Trash,区分文件状态。
- **Session机制**:
- Client在open时向MetaServer注册Session。
- close时移除Session,触发inode清理。
### 遗留问题
1. **孤儿inode处理**:
- 定期由MetaServer清理,(scanATERIALS)。
- vårdsогда, client端不处理,因可能导致无法回收。
2. **删除路径复杂性**:
- 多目录情况下, Trash的位置需谨慎选择,避免用户目录冲突。
3. **工具实现**:
- 开发工具查询 Trash, 逐个分区遍历, 复杂度高。
### 工作量评估
- **Trash机制**:
- MetaServer端:3天。
- Client工具:2天。
- **Session机制**:
- MetaServer端:3天。
- Client端:3天。
- **遗留问题**:需进一步规划。
### 结论
通过Trash和Session机制的结合,完善CurveFS Client的删除功能,确保文件系统稳定运行。方案目前选择简单实现,未来考虑优化,如moosefs式的Meta管理,以提升优雅性和可维护性。 |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
3 页请下载阅读 -
文档评分