CurveFS S3本地缓存盘方案适时把本地硬盘写缓存目录中的文件上传到远端对象存储集群,上传成功后,删除本地写缓存目录中的对应文件。 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 另外,异常管理模块处理客户端挂掉后的文件重新上传问题。 主要数据结构定义 class DiskCacheManagerImpl : public DiskCacheManager{ public: 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 本地缓存盘的异步上传 工作队列: 该队列中保存缓存盘中的待上传文件名 工作线程: 遍历工作队列(队列swap),从缓存盘目录读取到文件内容并上传到对象存储。文件上传到对象存储后,直接删除。 工作队列做好互斥管理 异常管理 如果客户端挂掉,那么写缓存盘中可能会有残留文件没有上传到对象存储0 码力 | 9 页 | 150.46 KB | 6 月前3
Curve文件系统元数据持久化方案设计中的某个 DB (一个 redis 实例可包含多个 DB) 或数据结构,这对于在要使用 multiraft 的场景下,每个 raft 实例需要独立的快照并不合适 如果改造 redis,初步评估了下,其工作量要比自己实现持久化的逻辑要大一些,改造主要是为了让 redis 提供单独 dump/load 一个 DB 的功能: 如果改造,dump/load 的逻辑都得动,而且会牵扯到一些其他逻辑(如主从复制,因为 在字典中维持一个索引计数器变量 rehashidx, 并将它的值设置为 0, 表示 rehash 工作正式开始 (3) 在 rehash 进行期间, 每次对字典执行添加、删除、查找或者更新操作时, 程序除了执行指定的操作以外, 还会顺带将 ht[0] 哈希表在 rehashidx 索引上的所有键值对 rehash 到 ht[1], 当 rehash 工作完成之后, 程序将 rehashidx 属性的值增一 (4) 随着字典操作的不断执行0 码力 | 12 页 | 384.47 KB | 6 月前3
Curve质量监控与运维 - 网易数帆小需求(改动小)将实现思路记录到任务管理系统中(JIRA),即可进行开发; 大需求(新模块、复杂功能)需要输出独立设计文档,并进行评审;对于功能或 性能影响较大的功能,还需要进行POC验证;评审和验证通过后才能启动开发 工作。 小需求 实现思路 开发 大需求 设计文档 POC 开发 7/33设计文档规范 设计文档需要具备以下内容: 修订记录 审批记录 系统介绍 相关调研 架构 异常测试 40+自动化用例 混沌测试 20轮自动化随机故障注入 12/33单元测试 单元测试是软件开发的过程中最基本的测试,它用来对一个模块、一个函数或者一个类来进行 正确性检验的测试工作。 curve通过lcov统计代码覆盖率,衡量单元测试的完备程度,如下图所示: 13/33集成测试 测试目的 测试内容 单元测试后,有必要进行集成测试,发现 并排除在模块连接中可能发生的上述问题, 异常测试 制造或模拟系统异常(磁盘错误、网络错误、资源 冲突等)、依赖服务异常、应用本身异常等非正常 情况,测试软件的性能和稳定性是否符合预期。 规模测试 测试模块在一定规模下是否能够正常工作,是否 会出现异常或者崩溃, 14/33系统测试 系统测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符 合系统说明书的地方。它是一个黑盒测试,可以发现系统分析和设计中的错误。0 码力 | 33 页 | 2.64 MB | 6 月前3
CurveFS Copyset与FS对应关系5、curvefs mds和metaserver的心跳 6、详细设计 6.1 创建fs 6.2、挂载fs 6.3、创建文件/目录 6.4、open流程 6.5、读写流程 6.6、topology 7、工作评估 7.1 client端 7.2 mds端 7.3 metaserver端 metaserver 子模块拆分 8、inode和dentry的内存估算 8.1 一台机器上能存放多少个inode和dentry fsinfo下面增加partition字段,用来维护fs的partition信息。 copyset在以前copyset的基础上,增加partiton信息。 partition id需要全局唯一。 7、工作评估 7.1 client端© XXX Page 17 of 19 1、mount的时候,获取这个fs的所有partition和copyset信息。分片信息的缓存。 2、paritition的选择。 元数据一定有对应的partition进行处理 inode manange/ dentry manager:负责管理元数据的内存结构 heartbeat:定期获取copyset的信息 模块 估算工作量(开发 + ci完成) client 10d mds 15d metaserver 10d 考虑到partition和copyset的多对一关系会带来开发商的复杂性,是否考虑先只实现par0 码力 | 19 页 | 383.29 KB | 6 月前3
Open Flags 调研数没用。如果pathname是相对路径,并且dirfd的值不是AT_FDCWD,则pathname的参照物是相对于dirfd指向的目录,而不是进程的当前工作目录;反之,如 果dirfd的值是AT_FDCWD,pathname则是相对于进程当前工作目录的相对路径,此时等同于open。 open flags flags定义 flags通过宏定义实现,定义见 ,主要包括如下flag fcntl.h 在curvefs上的测试 在现在的curvefs上进行open相关flag测试,发现已经支持部分open flags(mount 参数指定了default_permissions),VFS做了部分工作(如上open brief所述): O_CREAT # O_WRONLY|O_CREAT, S_IWUSR root@pubbeta1-nostest2:/tmp/fsmount# strace0 码力 | 23 页 | 524.47 KB | 6 月前3
curvefs client删除文件和目录功能设计s)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? 方案设计 Trash机制: Session机制: 遗留问题 工作量评估 背景 目前curvefs client版本对删除unlink和rmdir的设计只有简单的删除inode和dentry结构,遗留了nlink和lookup count相关的内容还未实 此时,nlink是没有-1的,删除接口直接忽略了第二步的错误。 根据其论文描述:© XXX Page 14 of 15 chubaofs使用的是类似fsck的工具去修复这个问题,也就是运维手段。 工作量评估 需要修改的模块,如下: Client端: 实现symlink、link接口; 修改unlink、rmdir接口,删除dentry,调用metaserver unlink,而不直接删除inode0 码力 | 15 页 | 325.42 KB | 6 月前3
CurveFS ChunkID持久化1. 2. 1. 2. 3. 4. 3. 2. 背景 将原有的获取chunkid的方法从space迁入mds中,并持久化写入etcd中; 只考虑单 mds 工作的情况; chunkid全局递增。 实现 proto/space.proto 中的 message AllocateS3ChunkRequest、message AllocateS3ChunkResponse0 码力 | 3 页 | 79.38 KB | 6 月前3
PolarDB开源生态介绍 - 杭州Meetup 2022.10.15兼容MySQL&PostgreSQL用户 生态伙伴 人才 降本提效 团队成长 商业服务 用户合作 • 联合实验室 PolarDB云原生分布式开源数据库产品 高校合作 • 课程合作 • 科研项目合作 • 工作组 高校 协同育人、教学优化成果 获客 影响力 职业发展 技能成长 获客 降本 影响力 新商机、 降本 合作沙龙、比赛 合作项目、解决方案 参与社区分享 • 编程之夏 • 黑客松0 码力 | 7 页 | 1.45 MB | 6 月前3
副本如何用CLup管理PolarDB数据赋能│价值创新 关于我 《PostgreSQL修炼之道:从小工到专家》的作者,中 启乘数科技联合创始人,PostgreSQL中国用户会常委。 从业近20年,拥有20年数据库、操作系统、存储领 域的工作经验,历任过阿里巴巴高级数据库专家、 网易研究院开发专家,从事过阿里巴巴Greenplum、 PostgreSQL、 MySQL数据库的架构设计和运维。 既熟悉数据库的,是最早的Oracle 9i的OCP,又懂开0 码力 | 34 页 | 3.59 MB | 6 月前3
CurveFS方案设计构建文件、块、对象等,第一种方式相当于重新开发了一套文件系统,并没有用到块设备的能力。另外第一种方式虽然更加灵活,在空间 管理方面更加简单(本地文件系统已经进行了空间管理),但数据层面需要重新设计,工作量是比较大的。因此我们选择基于块设备构建curvefs。 空间管理设计如下: inode → blk_list {blk1, blk(M*N)} 在文件系统mount的时候,读取所有inode0 码力 | 14 页 | 619.32 KB | 6 月前3
共 10 条
- 1













