curvefs client删除文件和目录功能设计方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? 方案设计 Trash机制: Session机制: 遗留问题 工作量评估 背景 目前curvefs client版本对删除unlink和rmdir的设计只有简单的删除in 所以不影响它对该文件的读写操作,当所有客户端都关闭该文件后,该文 件节点才会从 被清除。 reserve 使用了session机制,记录client端的open状态 通过META文件系统访问reserve 使用CUTOMA_FUSE_RESERVED_INODES消息保持和释放inode 实现了Timer,定期判断是否还有session,如果没有client打开,则进行清理。 优点: 通过meta文件系统来管理trash,更为优雅。© chubaofs也实现了查询机制,来查询处于freelist当中的inode的情况,以便与运维,这一部分没有细看。 优点: 实现简单,开发代价小,且后续可以增加metaserver端打开(session)等机制,向着moosefs的演进也是可以的。 我们的整个架构设计本身就类似chubao方式,这个方案本身是chubaofs的成熟方案,说明是已经被验证过是可行的方案。 缺点: 由于link0 码力 | 15 页 | 325.42 KB | 6 月前3
Curve元数据节点高可用Election struct { session *Session // etcd serversession keyPrefix string // leaderKey string // leaderkey leaderRev int64 // leaderkeyrevision leaderSession *Session // leaderSession leader func (e *Election) Campaign(ctx context.Context, val string) error { s := e.session client := e.session.Client() k := fmt.Sprintf("%s%x", e.keyPrefix, s.Lease()) txn := client.Txn(ctx)0 码力 | 30 页 | 2.42 MB | 6 月前3
CurveFs 用户权限系统调研nodeid, const void *inarg) { struct fuse_init_in *arg = (struct fuse_init_in *) inarg; struct fuse_session *se = req->se; ... if (arg->flags & FUSE_POSIX_ACL) se->conn.capable |= FUSE_CAP_POSIX_ACL; maximum size of read requests© XXX Page 11 of 33 * must be set both here *and* passed to fuse_session_new() * using the ``-o max_read=`` mount option. At some point * in the future, specifying 0 码力 | 33 页 | 732.13 KB | 6 月前3
Curve for CNCF Mainlong NETWORK LATENCY 50MS 1s frequently 7s recentlyStorage Engine Comparison (vs. Ceph) META MANAGEMENT CURVE CHUNK SERVER BLUESTORE META Precreate Chunk File Pool on ext4 RocksDB META OVERHEAD CurveFS • support operator capability level 2: automated application provisioning and configuration management and patch and minor version upgrads supported • File meta data preallocate • RAFT optimization0 码力 | 21 页 | 4.56 MB | 6 月前3
OID CND Asia Slide: CurveFSSupports RDMA and SPDK ○ Further reduce I/O latency and improve throughput ○ Support data lifecycle management ○ Curve block devices can be used as the underlying storage of Curve file systems ● System operation provide high availability/reliability ● Zero copy; Data stripe; RDMA to improve performance ● Management and monitor tools ● Support CSI deriver for upper cloud native applications accessTHANKS0 码力 | 24 页 | 3.47 MB | 6 月前3
TGT服务器的优化也可以多个卷的lun都分配到一个target上,这样多个卷共享一个target, 限制使用一个CPU。 • 管理平面不变。主线程里的事件循环及问题: 管理面是主线程,登录,增、删、改target,lun,session,connection,params 都在主线程,而target epoll 线程也要使用这些数据,多线程冲突,数据一 致性问题就来了对TGT的性能优化(续) • 为每一个target增加一把锁0 码力 | 15 页 | 637.11 KB | 6 月前3
CurveFS Client 概要设计server接口获取文件和目录信息等 与现有块设备client交互,调用块设备接口,对卷进行读写。 向上对接fuse接口,协调上述模块交互,实现功能。 main 主函数模块,类似deamon,接收mount消息并处理(fuse session)。 除上述功能以外,还需实现文件系统创建和fuse挂载工具,功能主要是: 创建文件系统,指定文件系统的名字、卷大小(多文件系统)、 扩展文件系统? 挂载fuse文件系统,指定挂载点、文件系统名字或fsID、server0 码力 | 11 页 | 487.92 KB | 6 月前3
Curve Cloud NativeCURVE COMMENT BASIC INSTALL Y (by Helm) automated application provisioning and configuration management SEAMLESS UPGRADES Y (by Helm) patch and minor version upgrads supported FULL LIFECYCLE Plan0 码力 | 9 页 | 2.85 MB | 6 月前3
共 8 条
- 1













