Curve技术解析之MDS元数据管理

curve简介

curve是今年7月份开源的一个⾼性能、⾼可⽤、⾼可靠的分布式存储系统,主打⾼性能、低延迟。

Curve设计可以作为多种存储场景的底层存储:例如块存储,对象存储,云原⽣数据库,EC等。

当前Curve已实现⾼性能块存储,并且基于这⼀场景对接了openstack 和 k8s。openstack上主要是⽤作云主机的系统盘和云盘,⽬前已经在线上稳定一年多了。k8s上主要是想作为计算节点的数据⽬录,这个场景⽬前在灰度环境中测试验证中。

当前curve的整个项目已经完全开源到github,感兴趣的小伙伴可以去star&&fork围观一下。

 

Curve存储系统的基础设计框架与经典的GFS基本类似,采⽤有中⼼节点的架构,核⼼服务由三个部分组成:

  • 元数据节点MDS,主要有两个职责,⼀⽅⾯管理和存储元数据信息,另⼀⽅⾯感知集群状态并进⾏调度。元数据存储在etcd中。
  • 数据节点chunkserver, ⼀⽅⾯负责数据的存储,另⼀⽅⾯负责数据⼀致性(如果底层是多副本,需要负责副本间的数据⼀致性)。
  • 客⼾端client, 向上层应⽤提供对⽂件的操作接⼝(open、read、write等), 会和mds以及chunkserver交互,与mds交互实现对元数据的增删改查;与chunkserver交互实现对数据的增删改查。

还有一个快照克隆服务器:

  • 快照克隆服务器独⽴于核⼼服务,对外提供了http接⼝,⽤于处理和管理快照克隆任务。

这篇文章会介绍一下curve的元数据的管理,主要是mds的元数据的管理。

mds是curve的元数据管理服务,负责整个集群的元数据管理。mds的所有元数据信息都会持久化到kv存储中,curve选择了etcd作为元数据的存储。

为了加快元数据的访问,mds还在内存维护了一个元数据的cache。cache采用LRU(Least Recently Used)淘汰策略,cache最多缓存的记录条目数量,通过mds的配置文件进行配置。

mds存储的元数据包含拓扑信息的元数据,namespace的元数据。所有的信息都是经过一定的编码,以kv的方式保存在元数据中。不同类型的元数据的编码方式不同,所有保存在mds的元数据的key都是以 “prefix + 其他字段”的方式进行编码。value则是对应的元数据序列化为字符串。

不同类型的元数据的前缀不同,这些前缀比如:

const char FILEINFOKEYPREFIX[] = "01";
const char SEGMENTINFOKEYPREFIX[] = "02";
const char SNAPSHOTFILEINFOKEYPREFIX[] = "03";
const char CHUNKSTOREKEY[] = "05";
const char TOPOLOGYITEMPRIFIX[] = "10";

拓扑元数据信息

curve的拓扑信息由mds的topology模块管理,topology管理集群的 topo元数据信息。用于管理和组织机器,利用底层机器的放置、网络的规划以面向业务提供如下功能和非功能需求。

  • 故障域的隔离:比如副本的放置分
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网易杭研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值