Curve文件系统元数据管理创建:/A/C不在,创建/A/C 删除文件:删除/A/C 删除目录:删除/A rename:rename /A/C到/B/E symbolic link: hardlink:生成一个hardlink /B/E,指向文件/A/C list:遍历/A目录 5.1.2 好处 5.1.2 问题 5.2 分片方式二:Inode按照inodeid进行分片,Dentry按照parentid进行分片 rename:rename /A/C到/B/E raft 更适合大文件顺序写 fastcfs 有元数据服务器 inode和dentry放一个结构体。 inode → hashtable(key是ino,全局) dentry → skip list (key是name,每个目录下一个) 计算出来的 binlog,随时间会越来越大 差 DG Master/Slave glusterfs 无中心化服务器 dht算法 hash 扩展时大量迁移 BST O(log(n)) O(n) c++ stl 模板© XXX Page 4 of 24 skip list O(log(n)) O(n) level db,https://github.com/google/leveldb/blob/master/db/skip list.h,( BSD) libfastcommon,https://github.com/happyfish100/libfastcommon/tr0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve Cloud Nativedetection, schedule tuningCloud native Feature list • Features for Cluster • Features for CurveBS • Features for CurveFS • Features for monitorFeature list for cluster • Install / uninstall/ upgrade installFeature list for cluster • CurveBS mirroring configured with CRDs • Different Curve clusters may share MDS and ETCD server • Replication between CurveFS configured with CRDsFeature list for CurveBS pmem) • Allow chunkserver on PVCs to automatically grow when the cluster is nearly fullFeature list for CurveFS • CSI plugin for CurveFS • CurveFS (cluster and storage pools) CRDs • Dynamic Volume0 码力 | 9 页 | 2.85 MB | 6 月前3
CurveFS方案设计作为 key , filename 直接和 fileInfo 关联,硬链接无法支持 b. 性能 list:list在通用文件系统中是很常见的操作,目前 curve 的元数据缓存使用的 lru cache,因此 list 只能依赖 etcd 的 range 获取方式。如果需要对 list 加速,需要新的缓存结构 c. 扩展性/可用性/可靠性 依赖于第三方kv存储,目前是etcd CurveFS ,在空间 管理方面更加简单(本地文件系统已经进行了空间管理),但数据层面需要重新设计,工作量是比较大的。因此我们选择基于块设备构建curvefs。 空间管理设计如下: inode → blk_list {blk1, blk(M*N)} 在文件系统mount的时候,读取所有inode的信息就可以重建出当前哪些block是已经分配的,哪些未分配,因此空间分配信息的表无需另外做持久化。这一信息可以缓存在0 码力 | 14 页 | 619.32 KB | 6 月前3
TGT服务器的优化wait状 态,会释放这把锁,管理面可以增删改target信息。 • 不需要target list lock • 因为TEL线程只存取自己负责的target,不存取别的target,所以TEL线程 不需要target list lock。 • 管理面是单线程,只有它遍历target list,没有需要互斥的情况。FIO性能测试(配置) • [global] • rw=randread0 码力 | 15 页 | 637.11 KB | 6 月前3
Curve文件系统空间分配方案空间分配 整体设计 分配器包括两层结构: 第一层用bitmap进行表示,每个bit标识其所对应的一块空间(以4MiB为例,具体大小可配置)是否分配出去。 第二层为free extent list,表示每个已分配的块,哪些仍然是空闲的(offset, length),以offset为key进行排序(这里可以用map或者btree对所有的free extent进行管理)。 当前设计不 2. 3. 以下图为例:file1新申请了2MiB的空间。首先从level1中随机选一个标记为0的块分配出去,然后将这一个块中的前2MiB空间分配给这个文件,剩余部分加入到level2中的list中。 后续,file1再次追加写入2MiB数据,此时申请空间时,需要附带上file1最后一个字节数据在底层存储的位置,再加1(期望申请的地址空间起始offset)。以图中为例,则附带的值为30MiB。 这次的空间申请,直接从level2中以30MiB作为key进行查找,找到后,进行空间分配。分配之后,相关信息如下图所示: 之前剩余的 30MiB ~ 2MiB 的extent完全分配出去,所以从level2中的list中删除。 文件inode中的extent可以将两次的申请结果进行合并,得到(0,28MiB,4MiB)。 特殊情况 新文件申请空间时,leve1中的所有bit都标记为1,即所有的块都已经预分0 码力 | 11 页 | 159.17 KB | 6 月前3
CurveFs 用户权限系统调研... -a, --access display the file access control list only -d, --default display the default access control list only -c, --omit-header do not display the comment header bout-the-user-and-the-process-that-is-try https://wiki.gentoo.org/wiki/Filesystem/Access_Control_List_Guide https://www.usenix.org/legacy/publications/library/proceedings/usenix03/tech/freenix03/ful0 码力 | 33 页 | 732.13 KB | 6 月前3
curvefs client删除文件和目录功能设计eelist中,目录由于是nlink从2开始,当目录的nlink=2时,连续减两次到0。 freelist会被定期清理,清理时筛选出超过7天的inodeid,将其从inode tree和free list中移除。 chubaofs中实现了forget接口:首先client端,在删除inode时,如果判断到nlink减到0,则加入client端维护 。forget接口执行时,判断inode是否在 中,如果在Orpha metaserver在收到该请求后,则设置inode的DeleteMarkFlag,并将其放入freelist。 freelist在定期清理时,当发现设置了DeleteMarkFlag,则直接从inode tree和free list中移除该inode,不再等待7天。 chubaofs实现了强制从freelist中移除inode的机制,同样是使用设置DeleteMarkFlag的方式。 chubaofs也实现了查询机制,来查询0 码力 | 15 页 | 325.42 KB | 6 月前3
NJSD eBPF 技术文档 - 0924版本BPF_MAP_TYPE_HASH • key inodeid • value CacheStatus, filemap[ ] {fd, chuk, size, kernel file, ver} • update list map BFP_MAP_TYPE_PERF_EVENT_ARRAY • updata cache mapCurve社区介绍 • Curve 的成⻓离不开⼤家的⽀持和参与。⾮常欢迎社区⽤户参与社区共建,可以0 码力 | 20 页 | 7.40 MB | 6 月前3
BRPC与UCX集成指南Read(butil::IOBuf *out, size_t n); – ssize_t Write(butil::IOBuf *buf); – ssize_t Write(butil::IOBuf *data_list[], int ndata);49 UcpWorker的实现 ●封装 ucp_worker_h ●一个UcpWorker对用多个UcpConnection,由UcpCm分配。 ●在pthread运行,busy0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve支持S3 数据缓存方案is inodeid std::unordered_map ::iterator fileCacheManagerMapIter_; RWLock rwLock_; std::list lruReadDataCacheList; uint64_t lruMaxSize; std::atomic dataCacheNum_; }; class FileCacheManager0 码力 | 9 页 | 179.72 KB | 6 月前3
共 13 条
- 1
- 2













