ChatGPT prompt 数据库专家_元数据


Ceph是一个一个分布式文件系统,同时支持对象存储、块存储、文件存储。

Ceph分离数据和元数据操作,通过用一个伪随机数据分布函数(CRUSH)替代分布表来最大化的分离数据与元数据管理,支持超过每秒250000次元数据操作。

系统架构图


ChatGPT prompt 数据库专家_文件系统_02


  • Clients: 暴露 near-POSIX 的文件系统接口给主机或进程
  • OSD Cluster:存储所有数据和元数据
  • Metadata Cluster:管理名空间(文件名和目录),协调安全与一致性

CEPH为了提升可伸缩性,将底层的数据存储等低级块的分配管理完全交给了OSD(对象存储设备),而CEPH专注于元数据和数据的分离及管理。

CEPH考虑到文件系统的元数据管理和读写随着系统的扩展,将成为一个明显的瓶颈,因此实现了一个可扩展的分布式的元数据管理集群,同样适用OSD进行储存并保证可伸缩性,极大提升了元数据访问的性能。

Dynamically Distributed Metadata


ChatGPT prompt 数据库专家_ceph集群和数据库到底是储存数据_03


相对于传统文件系统,CEPH存储和处理的元数据非常小,因为不需要存储文件分配表,元数据基本上都是目录项和文件信息组成,同时为了最大化目录访问速度,采用了动态子树分区的方法,每个MDS中使用基于时间衰减的计数器确定目录层级中某一节点的活跃度,并且统计数据从叶向根汇聚。通过定期比较这些计数器,重新分配每个MDS的处理部分,这里的负载迁移作者还额外设计了锁和类似两阶段提交,保证负载迁移时的元数据一致性。对于单个目录的热点,CEPH通过牺牲目录的本地性,按操作文件HASH到不同MDS上

Distributed Object Storage


ChatGPT prompt 数据库专家_数据_04


首先通过简单哈希算法映射对象到配置组(PGs),通过一个自适应的位掩码控制PG数量,选择一个值设定来平衡每个OSD的利用率。

然后PGs通过CRUSH算法分配到所有OSD,这个算法是一个伪随机数据分布算法, 能够有效的有序映射每个PG到多个OSD, 这个OSD组会存储对象副本。

这样有两个重要的优点:

  • 第一:完全分布式,任何部分(客户端, OSD或者MDS)都能独立计算object的位置。
  • 第二:Mapping 的更新会很少,几乎能够消除分布式元数据的交换

因为这些, CRUSH能够同时解决数据应该存在哪的问题和已存数据在哪的问题,通过设计,存储集群的一些小变化对已存在的PG mapping影响很小,使的因设备故障或者集群扩展导致的数据迁移也很少。

数据复制


ChatGPT prompt 数据库专家_文件系统_05


Map 到 n 个OSD上(称为n-way副本),客户端完成所有的写到主OSD上的对象PG中(主host),这些对象和PG被分配新的版本号,然后写到副本OSD上,当每个复制都完成并响应给主节点,主节点完成更新,客户端写完成。

故障检测

RADOS让存储相同PG的OSD互相监控,备份之间相互通路则可确认彼此是可用的, 这种方法没有额外的通信开销,如个一个OSD最近没有收到一个同伴的消息,一个对这个同伴的ping操作会被发出。