Ceph分布式存储系统(4)

CRUSH利用健壮的哈希函数,其得到的结果依赖于集群地图Cluster Map、存放规贝则(placementmles)和输入x。并且CRUSH是一个伪随机算法,两个相似的输入得到的结果是没有明显的相关性的。这样就能确保Ceph中数据分布是随机均匀的。

2.3. 数据一致性

Ceph中,为了保持数据的一致性,在PG内部通常会进行对象的净化过程(scrubobjects)。数据净化通常每天进行一次(通常在数据I/O量不大,进行系统维护时进行)OSD设备还能够通过进行数据对象bit-for-bit的对比进行深度的数据净化,用以找到普通数据净化中不易察觉的问题(比如磁盘扇区损坏等)。通过数据维护和净化,为数据的一致性提供了保障。

 

三、扩展性和高可用性

在传统的分布式系统中,客户端通常与一个中央节点进行交互,这样通常存在着单点故障问题,而且不利于系统的扩展。Ceph中客户端是直接与OSD节点进行交互,而不需要通过中心节点。对同一个对象,Ceph通常会在不同的OSD节点上创建多个备份,这样就保证了数据可靠性和高可用性。Ceph对元数据服务器也采用高可用的集群管理,这样也提高了系统元数据的的高可用性。Ceph的良好的高可用性和扩展性是系统设计的核心,这其中用到了很多精巧的设计和算法,下面就对实现Ceph的一些关键的实现技术进行介绍。

3.1. 高可用性的Monitor集群

Ceph的客户端读或者写数据之前,他们必须先通过Ceph Monitor来获取最新的Cluster Map的副本。如果只有一个Monitor节点,Ceph存储集群也可以正常工作,但是这样会有单点的风险(如果这一台Monitor节点宕机了,整个Ceph

集群就无法正常工作)Ceph中支持多台Monitor节点组成高可用的集群来提高整个Ceph系统的高可用性。Ceph中通过Paxos算法来保持Monitor集群中各个节点的状态一致性。

3.2. 高可用性的MDS集群

在通过Ceph FS接口使用Ceph集群时,Ceph集群中需要部署MDS(Metadata Server)进程,通常也是使用集群的方式进行部署。MDS集群的主要作用是将所有的文件系统元数据(目录、文件拥有者、访问权限等)存放在高可用的内存中。这样,客户端简单的文件操作(lscd)将由MDS集群快速的响应,而不用消耗OSD设备的I/O,实现了元数据与数据的分离。为Ceph FS文件系统接口将能提供了性能上的保证。

Ccph FS旨在提供POSIX兼容的文件系统接口,依赖于MDS中运行的ceph-mds进程,该进程不仅能够作为一个单一的进程运行,还可以分布式的运行在多个服务器上,实现了高可用性和扩展性。

(1)   高可用性:通常在Ceph集群中有多个ceph-mds进程在运行。当一个Ceph-mds出现运行故障时,备用的其他的ceph-mds能够立刻接替失效的ceph-mds的工作。这个过程主要依赖于Ceph中的日志机制并且通过高可用的Monitor进程来完成相关的恢复工作。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8d8809a81e4821d92d8b9e8e1cf0c2e4.html