CurveFS Client 概要设计
11 背景 概述 关键接口分析 init destroy lookup write read open create & mknod mkdir forget unlink rmdir opendir readdir getattr & setattr access rename symlink & readlink link flush & fsync 其他 功能分析 模块划分 接口设计 Cache设计 +forget_multi +flock +fallocate© XXX Page 5 of 11 +readdirplus +copy_file_range +lseek 关键接口分析 init void (*init) (void *userdata, struct fuse_conn_info *conn); 根据挂载信息,从mds获取文件系统信息(或superbloc parent,并修改name为newname。 二是,在new parent创建新的inode和dentry,然后删除旧的parent下的inode和dentry 两者都涉及到rename的事务性的问题?( ) 这里可能还需要详细分析到底是否需要完整的事务的4个特性acid,还是只需要实现其中部分 目前阶段rename可先不实现,但是可以先考虑一些方案。 symlink & readlink void (*symlink)0 码力 | 11 页 | 487.92 KB | 5 月前3Curve文件系统元数据管理
4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 5.1 分片方式一:inode和dentry都按照parentid分片 5.1.1 场景分析 查找:查找/A/C。 创建:/A/C不在,创建/A/C 删除文件:删除/A/C 删除目录:删除/A rename:rename /A/C到/B/E symbolic link: hardlink:生成一个hardlink value : struct inode; dentry可以抽象成 key : fsid+parentId+name , value : struct dentry; 分别从不同场景上进行分析,curve文件系统的元数据应该有以下的操作: 1、系统加载的时候,元数据从持久化介质加载。 2、业务运行过程中,元数据的增删改查。 3、系统退出的时候,元数据持久化。© XXX Page 7 200 → inode B dentry信息 0 + A → 100 100 + C → 300 0 + B → 200 100 + D → 400 5.1.1 场景分析 查找:查找/A/C。 1、client给server0发送请求:parentid 0 + name "A",查询"A"的inodeid为100© XXX Page 13 of 24 2、cl0 码力 | 24 页 | 204.67 KB | 5 月前3NJSD eBPF 技术文档 - 0924版本
采⽤eBPF加速云原⽣环境中 Curve⽂件系统性能 ⽹易数帆科技 向东提纲 • 什么是Curve • Curve的应⽤场景及挑战 • Curve客户端⾯临问题及分析 • 什么是ebpf • 基于epbf的Curve Cache设计 • Curve社区介绍Curve是什么? • Curve云原⽣软件定义存储 • Curve分布式块存储 • Curve分布式⽂件存储 • SETATTR inode 根据UID,ATIME,CTIME,length来设置属性 • 关闭⽂件时会发送FLUSH请求和RELEASE请求FUSE⽂件IO读写流程FUSE的IO路径及瓶颈分析 • 对⽐测试 • ⽂件访问测试直接访问ext4 • 通过FUSE访问passthrough_ll底层ext4 • 内核调⽤延迟测试 • 与FUSE Daemon通讯120us左右,FUSE LD_PRELOAD重载⽂件系统系统调⽤ • vpp / f-stack / DirectFUSE • Kernel版本实现 • BentoFS 基于rust的实现采⽤LD_Preload⽅式瓶颈分析 • 环境 • FUSE daemon使⽤ passthrough_ll 调⽤底层ext4 • 进程共享内存通信延迟10us+ • others 开销 10us+ • fuse0 码力 | 20 页 | 7.40 MB | 5 月前3CurveFS方案设计
李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 试: 。测试结果c开发的moosefs和fastcfs元数据性能远优于go开发的chubaofs和c开发的cephfs,理论上分析这个结果是合理的,分布式的元数据设 调研测试 计会涉及到多次rpc的交互。这里需要确认的一点是:我们需要怎样的元数据节点的性能? 可行性分析 方案对比 根据上述调研和测试结果,我们考虑了三种curvefs的元数据设计方案: CurveFS kv方案设计 cur0 码力 | 14 页 | 619.32 KB | 5 月前3Curve支持S3 数据缓存方案
Read流程 ReleaseCache流程 Flush流程 FsSync流程 后台流程 poc测试验证 背景 基于s3的daemon版本基于基本的性能测试发现性能非常差。具体数据如下: 通过日志初步分析有2点原因© XXX Page 3 of 9 1.append接口目前采用先从s3 get,在内存中合并完后再put的方式,对s3操作过多 2.对于4k 小io每次都要和s3交互,导致性能非常差。 acheNum值,如果不为0,则继续遍历,如果为0则回到1步骤。 poc测试验证 根据上述设计,完成初步daemon,测试结果如下图 目前看写性能有明显的提升,但时延仍然很高, 。 需要进一步分析0 码力 | 9 页 | 179.72 KB | 5 月前3Curve质量监控与运维 - 网易数帆
测试模块在一定规模下是否能够正常工作,是否 会出现异常或者崩溃, 14/33系统测试 系统测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符 合系统说明书的地方。它是一个黑盒测试,可以发现系统分析和设计中的错误。 Curve的系统测试一般是由QA来完成,包含: 常规测试,主要是新增功能的手工测试; 性能测试,将性能数据与基准对照,确定性能没有出现预期外的下降或提升; 稳定性测试,在正常压力下运行足够长的时间; 指标 的采集与存储。 Daily reporter——python脚本,定时从 Grafana获取指定集群的图表,生成集群监控 日报,并通过邮件发送。 Grafana——开源的度量分析和可视化工具, curve利用它进行数据可视化展示。 20/33监控指标(metric)的生成 Curve使用brpc内置的bvar计数器类库,来生成监控指标,其特点是: thread local存储,减少了cache0 码力 | 33 页 | 2.64 MB | 5 月前3CurveFS Copyset与FS对应关系
XXX Page 3 of 19 2、chubaofs的元数据管理 chubaofs(补充链接)的元数据也是采用的raft的方式进行管理,可以借鉴一下chubaofs的元数据的分片策略。 通过分析chubaofs的源代码。chubaofs的用volume管理一个文件系统,每个volume有若干meta partition和data partition。meta partition管理的元数据,data partition和10个data partition。chubaofs的data partition的功能我们使用curve块设备替换。meta partition的创建,以及meta partition的管理的,下面会详细分析一下。 2.1、meta partition的创建 再创建文件系统的时候,会创建好指定大小的metapartition,meta partition的数量最小不低于3,最大不高于100。每个meta0 码力 | 19 页 | 383.29 KB | 5 月前3Open Flags 调研
在不进行对齐的情况下本地文件系统会报错,但是curvefs没有报错 启用成功,要么fuse做了处理。 分析结果:用户态文件系统在fuse_reply_open中设置fuse_file_info→direct_io后,内核感知该flag避免使用pagecahe,直接将数据在用户态和文件系统之间传递。从对本地文件系统和vfs分析发现,对齐的校 验在VFS do_blockdev_direct_IO中实现,各文件系0 码力 | 23 页 | 524.47 KB | 5 月前3TGT服务器的优化
loop多路复用。 • 多个target时,如果挂的设备多,一旦客户端请求量大,就会忙不过来。 • 开源界有尝试修改 • 例如sheepdog的开发者提交过一个patch,但是测试效果不理想,分析 原因,event loop依然是瓶颈对TGT的性能优化 • IO是使用多个epoll 线程,充分发挥多CPU能力 • 当前策略是每个target一个epoll线程,负责Initiator发过来的I/O0 码力 | 15 页 | 637.11 KB | 5 月前3Curve核心组件之chunkserver
化,fio性能测试的结果如下表格: Nbd 10盘: Nbd单盘:新版本ChunkServer性能优化 单深度fio测试chunkserver内部时延统计 Raft 日志落盘延迟 优化前性能分析:braft日志落盘时延占据了ChunkServer处理时延的50%以上,因此推断braft日志落盘存在瓶颈 ChunkServer性能优化主要是braft日志落盘优化,包括三个方面: 1、追加写改为覆盖写0 码力 | 29 页 | 1.61 MB | 5 月前3
共 10 条
- 1