CurveFs 用户权限系统调研CurveFs 用户权限系统调研(已实现)© XXX Page 2 of 33 一、Curvefs测试 1. 启动curvefs 问题1:root用户无法访问挂载目录 测试 allow_root 测试allow_other 参考文献 问题2:本地文件系统挂载默认是共享的? 问题3:文件系统访问控制是在哪一层实现的? 二、文件系统权限管理 文件类型 文件权限 特殊权限(SUID, SGID, STICKY) 环境:test2 1. 启动curvefs 手动创建curve卷,/etc/curve/client.conf中配置卷所在集群信息。 启动服务&client挂载卷:bash startfs.sh start volume (挂载目录为/tmp/fsmount)© XXX Page 3 of 33 # wanghai01@pubbeta1-nostest2:~/curvefs/curve$ conf=./curvefs/conf/curvefs_client.conf /tmp/fsmount 问题1:root用户无法访问挂载目录 测试发现client mount进程是哪个用户启动的就只有该用户(filesystem owner)可以访问该目录,即使挂载点mode是777。 # filesystem owner wanghai01@pubbeta1-nostest2:/tmp$ ls0 码力 | 33 页 | 732.13 KB | 6 月前3
CurveFS Copyset与FS对应关系copyset fs共用吗? 3.3 copyset个数是否可以动态调整? 4、curvefs的topo信息 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 应该的可以避免一个机器上,有太多的copyset。 结论:coypset由fs共用。具体的使用上,每一个copyset上,有一个可以由多少fs共用的限制。这个限制通过配置文件进行配置。用户挂载时可以通过参数配置是否独占copyset。原因是,为了避免fs独占copyset 带来的copyset数量过多影响性能的问题。 3.3 copyset个数是否可以动态调整? 根据copyset个数是否可以动态调整,有两种实现。 © XXX Page 10 of 19© XXX Page 11 of 19 6.2、挂载fs 挂载fs的流程不变,client向mds发送mount rpc请求,mds对fs进行相应的检查,然后记录挂载点返回成功。 1、检查文件系统是否存在 2、检查fs的状态,是否是INITED状态 3、检查挂载点是否已经存在 6.3、创建文件/目录 client在创建inode的时候,如何选择c0 码力 | 19 页 | 383.29 KB | 6 月前3
副本如何用CLup管理PolarDB华北2(北京)可用区K • 华南1(深圳)可用区F。 只有某些规格的虚拟机可以挂载Nvme共享盘: • g7se • c7se • r7se 虚拟机要求是按量付费才可以挂载Nvme共享盘 阿里云的VIP功能目前还在内侧阶段,需要申请其他云环境中使用CLup创建Polardb的情况 天翼云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有反亲和性 华为云 有共享盘 有VIP 有VIP 机器有反亲和性 移动云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有弱反亲和性 腾讯云 无共享盘 VIP是内测阶段 机器的反亲和性:不清 楚 联通云 无共享盘 有VIP 机器有反亲和性创建PolarDB需要的阿里云环境 创建虚拟机的时 候选中的盘都不 是共享盘,必须 在创建完虚拟机 后,在单独添加 共享盘 注意创建Pola0 码力 | 34 页 | 3.59 MB | 6 月前3
Raft在Curve存储中的工程实践对接PolarFS作为云原生数据库的高性能存储 底座,完美支持云原生数据库的存算分离架 构 • Curve作为云存储中间件使用S3兼容的对象 存储作为数据存储引擎,为公有云用户提供 高性价比的共享文件存储 • 支持在物理机上挂载使用块设备或FUSE文件 系统开源社区 社区运营 生态共建 开源共建 源码兜底 技术领先 目标 方法 影响力 降本 获客 用户 开发者 操作系统 芯片 数据库 云原生 AI训练 大数据 文件存储RAFT应用 Curve文件存储 • 分布式文件系统 • 支持多挂载,提供close-to-open一致性 • 提供缓存加速,可使用内存、本地盘、云盘加速 • 存储后端可对接对象存储,降低成本 • 支持生命周期管理 Curve文件存储架构 • client:接受用户请求,采用fuse的方式挂载挂载使用。 • 元数据集群:mds 和 metaserver。 • mds:保存元数据,包括topo信息、文件系统信0 码力 | 29 页 | 2.20 MB | 6 月前3
CurveFS Client 概要设计+copy_file_range +lseek 关键接口分析 init void (*init) (void *userdata, struct fuse_conn_info *conn); 根据挂载信息,从mds获取文件系统信息(或superblock),块分配器(bitmap)和root inode所在的copyset、 metaserver ip等信息 去metaserver获取文件系统信息(super 主函数模块,类似deamon,接收mount消息并处理(fuse session)。 除上述功能以外,还需实现文件系统创建和fuse挂载工具,功能主要是: 创建文件系统,指定文件系统的名字、卷大小(多文件系统)、 扩展文件系统? 挂载fuse文件系统,指定挂载点、文件系统名字或fsID、server ip(可从配置文件读取)。 模块划分 根据上述功能模块,将client划分模块 fs cache0 码力 | 11 页 | 487.92 KB | 6 月前3
Curve文件系统元数据管理一、 ,去所有的metaserver上查询id为300的inode信息。 遍历所有的metaserver 二、通过一个额外的缓存,缓存inode id和partition的映射关系。这个缓存可以在挂载文件系统的时候缓存在client端。不缓存具体的Inode的结构体,仅仅缓存(inodeid, partitionid)的映射,如果inodeid为uint64类型,partitionid为uint 64_t类型,那么一条记录需要16字节。一个文件系统按照10亿的元数据统计,10亿 * 16字节 = 1.5GB,全部缓存到内存需要1.5GB的内存。除了缓存需要占用的内存资源之外,如果涉及到多挂载的场景,还需要处理inode缓存失效的问题。 5.2 分片方式二:Inode按照inodeid进行分片,Dentry按照parentid进行分片© XXX Page 18 of 24 这种分片方式的 ,对性能的影响 可能没有想象中的大。一旦client知道了文件或者目录的inodeid,后续对inode的修改,都不需要去先查询dentry信息,可能直接对inode进行修改。 还有将来如果支持多挂载或者一写多读或者多写多读的场景,那么面临着client的缓存失效的问题,这个时候需要去metaserver重新查询inode的信息,这个查询也不需要重新查询dentry信息。因为一个文件或者 目录,0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve核心组件之Client - 网易数帆新版本Client/NEBD性能优化 QEMU、Curve-NBD:上层应用 通过链接curve-client使用curve提供的服务 FileManager:提供接口,记录已挂载卷 FileInstance:对应一个已挂载的卷 LeaseExecutor:负责定期与MDS通信,获取卷的元数据信息 元数据信息在打快照时会进行变化 MetaCache:元数据缓存 IOTracker:跟踪一个上层IO请求0 码力 | 27 页 | 1.57 MB | 6 月前3
CurveFS S3本地缓存盘方案}; 方案设计思考 本地硬盘如何管理 借用linux本地文件系统进行管理,存储进本地硬盘的内容以文件的形式来表现。 配置一个目录用于本地硬盘的文件管理,对作为缓存盘的本地硬盘进行格式化并挂载到该目录(如果没有缓存盘,那一般而言就是系统盘本身了)。 本地缓存盘的文件内容表示 本地缓存盘存放的文件即是存储到对象存储中的对象。 写缓存如何作为读缓存利用 除了写缓存目录,另外引入读缓存0 码力 | 9 页 | 150.46 KB | 6 月前3
BRPC与UCX集成指南●使用epoll和边沿触发 ●提供监视一个fd是否可读写,并调用对应socket对象的成员函数1314 Socket 输入事件处理15 Socket options ●是创建socket的参数 ●主要成员: –fd 是socket文件句柄 –void (*on_edge_triggered_events)(Socket*) ●可读事件的回调函数16 Server创建Socket Ucp Context ●只有一个全局对象,使用下列函数获取 ●UCP_Context* get_or_create_ucp_ctx() ●指定了FEATURE_AM, 多线程共享39 命令行参数控制context的属性 ●--brpc_ucp_error_mode缺省是none,是的本地通讯使用shared memory成为可能 ●--brpc_set_cpu_latency 非-1, –接收和发送使用无锁队列 ●UcpWorker接收时写入UcpConnection的无锁队列 ●brpc发送时写入UcpWorker的无锁发送队列5455 UcpWorker实现 ●提供命令行参数调整ucp worker的行为 –--brpc_ucp_worker_busy_poll为true时使用busy poll –--brpc_ucp_worker_poll_time为wait模式时,一次突发的poll的时长0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve质量监控与运维 - 网易数帆容易发现隐藏的问题,手工测试无法做到频繁触发 测试用例可以持续积累,成为代码质量的。 目前Curve的 异常测试以及混沌测试 均实现了自动化。 15/33测试用例的编写方法 很多情况下,待测试场景会包含多个变化的参数,每个参数有若干个典 型值;如果将用例覆盖所有可能的情况,总用例数将达到不可接受的程 度。因此,需要通过组合测试的方法,尽量用较少的用例数量覆盖绝大 多数情况: 两因素组合测试 通过测试集覆 和缺陷检测能力上达到了平衡。因此,一般测试用例应该保证两因素组 合的100%覆盖。 多因素组合测试 生成的测试集可以覆盖任意t个变量(t>2)的所有取值组合。 基于选择的覆盖 选择最常用的参数值作为基础组合,在此基础上每次改变一个参数, 生成新用例。 16/33 我们可以依据Given-When-Then模式来编写具体的测试用例: Given —— 测试上下文 When —— 执行一系列操作 Then0 码力 | 33 页 | 2.64 MB | 6 月前3
共 14 条
- 1
- 2













