副本如何用CLup管理PolarDBCLup管理节点2 高可用机制自动切换 数据一致性保证 数据可用性 提供读写VIP 读写高可用 读写分离 多个读库之间负载均衡 负载均衡 读线性扩展 支持分库分表 高扩展性 写 VIP 读 VIP PG (Primary) PG (Standby1) PG (Standby2) PG (Standby3) 数据同步复制 写请求 读请求0 码力 | 34 页 | 3.59 MB | 6 月前3
Curve文件系统元数据管理com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要占用额外空间,性能和hash表的大小有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现 4、curve文件系统的元数据内存组织 式,对性能友好,但是需要消耗比较多的内存,元数据服务的扩展性受限于内存,而且在元数据服务启动的 时候,需要等待一段时间加载内存。 一种是元数据需要全部加载到内存,这种情况下,元数据只需要加载一小部分主要的元数据,比如说super block这种,剩下的比如inode,dentry这种,按需加载,而且使用淘汰机制,内存中不常用的元数据可以淘汰出去。这种方式,扩展性好,元数据服务的扩展性不受限于内存,服务上的内存只有几百GB,而硬盘空 lock_;© XXX Page 10 of 24 }; 5 元数据分片 inode和dentry的组织是按照什么方式进行组织,还有一些因素需要考虑。 是mds节点上组成一个全局的结构体,还是分目录,按照一个目录进行组织。 这需要考虑的元数据管理的分片策略。当前curve文件系统目的是提供一个通用的文件系统,能够支持海量的文件,这就需要文件系统的元数据有扩展能力。元数据管理仅使用一台元数据管理服务器是不够的。使0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve文件系统元数据持久化方案设计Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 STL 中的哈希表(unsorted_map),之后有可能根据需求换成 B+ 树或跳表,但是 redis 中的这些数据结构我们是不需要的 另外,如果 C++ 中的哈希表在后期使用中发现性能不达标的话(特别是在 rehash 扩桶的时候),我们可以把 redis 中的哈希表借鉴过来用(redis 中的哈希实现很独立,单独的文件 t_hash.c,其性能表现也非常好) redis 哈希表实现主要优点参考以下 redis 感觉不是很划算 redis 中哈希表实现的优点? 主要是当哈希表需要扩桶的时候,rehash 过程中 redis 采用了均摊/渐进式的思想,把 rehash 中的性能损耗均摊在每一次 SET/DEL 操作中(如 rehash 总耗时 1 秒,均摊给 100 个请求,那么每个请求只增加延时 10 毫秒),rehash 过程如下: 哈希表渐进式 rehash 的详细步骤: (1)0 码力 | 12 页 | 384.47 KB | 6 月前3
CurveFS方案设计inode → blk_list {blk1, blk(M*N)} 在文件系统mount的时候,读取所有inode的信息就可以重建出当前哪些block是已经分配的,哪些未分配,因此空间分配信息的表无需另外做持久化。这一信息可以缓存在 client 或者 metaserver。© XXX Page 12 of 14 1. 2. 3. blk的粒度为多少? 从调研的系统来看,如0 码力 | 14 页 | 619.32 KB | 6 月前3
Open Flags 调研*how, size_t size); open系统调用会打开pathname指定的文件(如果不存在,如果携带O_CREAT flag则会创建),返回一个文件描述符fd(该fd是进程打开文件描述符表的index),在后续系统调用(read(2)、write(2)、lseek(2)、fcntl(2) etc.)中指向这个打开的文件。打开的文件描述符记录中保存着文件的offset 和 文件status。0 码力 | 23 页 | 524.47 KB | 6 月前3
PFS SPDK: Storage Performance Development Kit大块数据(全是0),减少了nvme传输带宽,而且nvme在垃圾回收上 可以优化,例如只是标记某块为0, 而不用实际写,gc时不需要搬运。10/17/22 12 nvme读写的内存对齐要求 ●NVME读写传输描述分两种规格:PRP和SGL。 PRP是第一个版本, SGL是后面才发展起来的 ●PRP要求内存按PAGE对齐 ●SGL要求字节/或4字节对齐(double word), 相对宽松10/17/22 130 码力 | 23 页 | 4.21 MB | 6 月前3
新一代云原生分布式存储中心节点感知集群的信息,进行资源实时调度 • 节点故障不会涉及其他的数据迁移 KEY (Offset, Len) VALUE (DiskID) (0, 4MB) 70 (4MB, 8MB) 60 (8MB, 16MB) 50分布式存储的要素 — 一致性协议 多副本: 写三次? 一致性协议 一致性:WARO(Write-all-read-one)、Quorum WARO • 所有副本写成功 • 读可用性高:可以读任一副本0 码力 | 29 页 | 2.46 MB | 6 月前3
Curve文件系统空间分配方案所以可以参考chubaofs,对大小文件区分不同的分配逻辑。同时,将文件系统的空间划分成两个部分,一部分用于小文件的空间分配,另一部分用于大文件分配。两部分空间是相对的,一部分用完后,可以申请另 一部分的空间。比如,大文件部分的空间完全分配出去,则可以继续从小文件空间进行分配。 用于小文件空间分配的部分,空闲空间可以用extent来表示。 小文件在空间分配时,也需要考虑尽量分配连续的地址空间。0 码力 | 11 页 | 159.17 KB | 6 月前3
CurveFS Client 概要设计向上提供两层接口,分别是© XXX Page 3 of 11 对接fuse,提供通用文件系统接口。对于fuse接口,先前进行了一些调研,见FUSE调研 提供lib库,提供对接分布式数据库接口,这一部分,可参考polarfs的接口,如下图所示。 根据讨论,我们首先对接fuse的lowlevel operators,对于数据库的lib库接口,后续可以在此基础上再做一层对接。lowlevel operators接口一共45个,如下:0 码力 | 11 页 | 487.92 KB | 6 月前3
curvefs client删除文件和目录功能设计chubaofs实现了强制从freelist中移除inode的机制,同样是使用设置DeleteMarkFlag的方式。 chubaofs也实现了查询机制,来查询处于freelist当中的inode的情况,以便与运维,这一部分没有细看。 优点: 实现简单,开发代价小,且后续可以增加metaserver端打开(session)等机制,向着moosefs的演进也是可以的。 我们的整个架构设计本身就类似chubao方式,这0 码力 | 15 页 | 325.42 KB | 6 月前3
共 10 条
- 1













