中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

超大规模集群支持

在很多集群架构中,集群成员的主要目的就是让集中式接口知道它能访问哪些节点,然后此中央接口通过一个两级调度为客户端提供服务,在PB到EB级系统中这个调度系统必将成为最大的瓶颈。

Ceph消除了此瓶颈:其OSD守护进程和客户端都能感知集群,例如Ceph客户端、各OSD守护进程都知道集群内其他的OSD守护进程,这样OSD就能直接和其它OSD守护进程和监视器通讯。另外,Ceph客户端也能直接和OSD守护进程交互。

Ceph客户端、监视器和OSD守护进程可以相互直接交互,这意味着OSD可以利用本地节点的CPU和内存执行那些有可能拖垮中央服务器的任务。这种设计均衡了计算资源,带来几个好处:

  • OSD直接服务于客户端:由于任何网络设备都有最大并发连接上限,规模巨大时中央化的系统其物理局限性就暴露了。Ceph允许客户端直接和OSD节点联系,这在消除单故障点的同时,提升了性能和系统总容量。Ceph客户端可按需维护和某OSD的会话,而不是一中央服务器。
  • OSD成员和状态:Ceph OSD加入集群后会持续报告自己的状态。在底层,OSD状态为up或down,反映它是否在运行、能否提供服务。如果一OSD状态为down且in,表明OSD守护进程可能故障了;如果一OSD守护进程没在运行(例如崩溃了),它就不能亲自向监视器报告自己是down的。Ceph监视器能周期性地ping OSD守护进程,以确保它们在运行,然而它也授权OSD进程去确认邻居OSD是否down了,并更新集群运行图、报告给监视器。这种机制意味着监视器还是轻量级进程。
  • 数据清洗:作为维护数据一致性和清洁度的一部分,OSD能清洗归置组内的对象。也就是说,Ceph OSD能比较对象元数据与存储在其他OSD上的副本元数据,以捕捉OSD缺陷或文件系统错误(每天)。OSD也能做深度清洗(每周),即按位比较对象中的数据,以找出轻度清洗时未发现的硬盘坏扇区。
  • 复制:和Ceph客户端一样,OSD也用CRUSH算法,但用于计算副本存到哪里(也用于重均衡)。一个典型的写情形是,一客户端用CRUSH算法算出对象应存到哪里,并把对象映射到存储池和归置组,然后查找CRUSH图来确定此归置组的主OSD。
  • 客户端把对象写入目标归置组的主OSD,然后这个主OSD再用它的CRUSH图副本找出用于放对象副本的第二、第三个OSD,并把数据复制到适当的归置组所对应的第二、第三OSD(要多少副本就有多少OSD),最终,确认数据成功存储后反馈给客户端。

有了做副本的能力,OSD守护进程就可以减轻客户端的复制压力,同时保证了数据的高可靠性和安全性。