CurveFS方案设计这种方式相当于每次都是全量缓存当前元数据,不做增量快照,考虑到转储逻辑,这也是可以接受的 对比这两种方案,第一种方案对于copy场景是友好的,但需要重新实现一套快照逻辑;第二种方案的改动和实现相对简单,并且对于需要备份的场景也是够用的。从可解决程度和解决的必要性考虑,选择第二种方 案。 关键点 mds volume 文件空间管理 文件系统的元数据所在的copyset分配策略(前期可以考虑都分配到同一个copyset上) 中包含一些指针,通过指针实现数据的共享;第二类类似 moosefs 和 chubaofs,使用 inode 和 dentry 两种结构,dentry 中记录 parentID、InodeID、filename 等信息,inode 中记录文件空间占用、文件属性等信息,通过共享 inodeID 实现数据共享。curve的文件元数据管理设计为分布式的,因此第一种通过内存实现数据共享的方式并不适用,我们选择第二种方式。具体的元数0 码力 | 14 页 | 619.32 KB | 6 月前3
curvefs client删除文件和目录功能设计可能需要引入额外的复杂性,但是依然可以实现简单的 工具查询。 由于该方案,删除的inode是分散于每个partition中,那么查询工具可能需要遍历所有partion去查询所有的删除inode。 第二种方案: 将inode移动到隐藏的trash目录,这个trash目录可以是实际的目录结构,有dentry和inode,并遵循当前inode和dentry的放置方式(inode按照inodeid分布 XXX Page 13 of 15 遗留问题 上述方案还存在一个遗留问题,就是孤儿inode的问题: client无论在进行unlink过程时,需要两步,第一步是删除dentry,第二步是nlink-1,那么在执行完第一步之后,client如果崩溃或者掉电,或者是发送nlink-1的rpc失败(可以重试,但重试仍有可能失败), 这种情况下,就会存在nlink未被减1的情况,当所有 // dentry is deleted successfully but inode is not, still returns success. 此时,nlink是没有-1的,删除接口直接忽略了第二步的错误。 根据其论文描述:© XXX Page 14 of 15 chubaofs使用的是类似fsck的工具去修复这个问题,也就是运维手段。 工作量评估 需要修改的模块,如下: Client端:0 码力 | 15 页 | 325.42 KB | 6 月前3
Curve文件系统元数据管理400,查询"D"的inode信息。 5.1.2 好处 这种方案的好处在于,inode和dentry大概率落到一个分片上管理。在查询inode的过程中,第一步通过parentid和name查询inodeid,第二步通过inodeid查询inode结构体在同一个分片上处理。查询时,client只 需要向metaserver发送一次请求,就可以完成上面两步的查询任务。 5.1.2 问题 在一种特殊的情况下, of 24 这种分片方式的,inode和dentry的分布没有任何关系,查找inode和查找dentry的大概率需要不同的分片进行处理。这样第一步通过parentid和name去查询inodeid,第二步通过inodeid去查询inode结构体,这两 步就必须通过两次请求。相对于分片方式一,这种方式,client向metaserver进行查询的时候,rpc请求的个数近似翻倍,多一倍的查询,对性能上的影响能否接受。0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve 分布式存储设计Curve 分布式存储设计 程义 — Curve Maintainer XAgenda 第二 第三 第四 第一 Curve的由来 Curve的设计目标 Curve块存储 和 Curve文件存储 Curve社区Curve的由来 1. 代码复杂/代码量大 2. 运维难度高 3. 无法满足高的性能需求Curve的设计目标 1. Curve云原生软件定义存储 2. Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3
Curve核心组件之chunkserver3、改为O_DIRECT模式 How? Why?新版本ChunkServer性能优化 1、模拟braft日志落盘方式的demo程序测试结果,latency为调用sync花费的时间(第一次新写,第二次覆盖写); 2、因为在请求4KB的情况下,写入的大小带上头部后是4120,是不对齐的,所以又测试了一下把写入大小改成4096的情况:新版本ChunkServer性能优化 因此ChunkServ0 码力 | 29 页 | 1.61 MB | 6 月前3
Curve文件系统空间分配方案file这两个特性,需要fuse client端配合完成。 空间分配 整体设计 分配器包括两层结构: 第一层用bitmap进行表示,每个bit标识其所对应的一块空间(以4MiB为例,具体大小可配置)是否分配出去。 第二层为free extent list,表示每个已分配的块,哪些仍然是空闲的(offset, length),以offset为key进行排序(这里可以用map或者btree对所有的free extent进行管理)。0 码力 | 11 页 | 159.17 KB | 6 月前3
共 6 条
- 1













