curvefs client删除文件和目录功能设计所以在实现unlink接口或rmdir接口时,需要判断unlink字段的当前值,当nlink字段大于1时,只减nlink字段就可以了,当nlink字段减到0时,才真正的执行删除inode。 目录的nlink字段与文件的nlink字段不同, , 并且在目录下, , 删除目录nlink相应的减1。 目录的nlink字段初始值为2 每创建一个新目录,nlink字段也会+1 目录不支持硬链接。 当lookup count在fuse_reply_entry和fuse_reply_create时增加1 当内核移除其inode cache时,会调用forget,此时lookup count需要减nlookup(forget的参数) 当umount时,所有lookup count减至0 不应该完全依赖forget接口去实现inode的移除,因为forget接口可能不会被内核调用(例如client崩溃) 对应的metasever接收到请求后,如果是文件,使得nlink计数减1,如果减到0,则将inodeid放到freelist中。 inode在freelist中存放7天,以应对有文件被打开的情况。 如果nlink减到0的是目录,则直接移除,不需要放到freelist中,目录由于是nlink从2开始,当目录的nlink=2时,连续减两次到0。 freelist会被定期清理,清理时筛选出超过7天的inodeid,将其从inode0 码力 | 15 页 | 325.42 KB | 6 月前3
Curve文件系统元数据持久化方案设计里面进行查找,诸如此类 另外, 在渐进式 rehash 执行期间, 新添加到字典的键值对一律会被保存到 ht[1] 里面, 而 ht[0] 则不再进行任何添加操作: 这一措施保证了 ht[0] 包含的键值对数量会只减不增, 并随着 rehash 操作的执行而最终变成空表© XXX Page 12 of 12 参考 leveldb/boltdb/redis 持久化调研0 码力 | 12 页 | 384.47 KB | 6 月前3
Curve支持S3 数据缓存方案后台会遍历DataCache,达到flushwait的时间,或者DataCache size为chunksize,满足一个条件则调用DataCache的flush。 4.更新元数据,清理DataCache缓存,DataCacheNum_减1。 5.遍历完一轮DataCache后,获取DataCacheNum值,如果不为0,则继续遍历,如果为0则回到1步骤。 poc测试验证 根据上述设计,完成初步daemon,测试结果如下图 目前看写性能有明显的提升,但时延仍然很高,0 码力 | 9 页 | 179.72 KB | 6 月前3
副本如何用CLup管理PolarDBclup-server 数据中心1 CLup管理节点2 高可用机制自动切换 数据一致性保证 数据可用性 提供读写VIP 读写高可用 读写分离 多个读库之间负载均衡 负载均衡 读线性扩展 支持分库分表 高扩展性 写 VIP 读 VIP PG (Primary) PG (Standby1) PG (Standby2) PG (Standby3) 数据同步复制0 码力 | 34 页 | 3.59 MB | 6 月前3
Curve设计要点测试环境:6台服务器*20块SATA SSD,E5-2660 v4,256G,3副本场景 高性能高性能 • quorum机制:raft • 轻量级快照 • io路径上的优化 • filepool落盘零放大 • 轻量级线性一致性读 • io路径上用户空间零拷贝 10卷4K随机读写IOPS 294k 185k 330k 565k 4K随机写 4K随机读 Ceph(L/N) Curve 58.92% 710 码力 | 35 页 | 2.03 MB | 6 月前3
共 5 条
- 1













