FusionStorage的ZK盘和几个视图的工作原理

ZK(zookeeper)盘:是个开源软件。3个ZK盘和MDC构成了FusionStorage的集群管理软件,管理VBS和OSD的心跳,将视图信息(OSD view,IO view,Partision view)保存在ZK盘中。而且,一旦在ZK盘中的r视图与其它盘中的视图产生冲突,以ZK盘存放的元数据为主。

  ZK盘:server端(为MDC提供选主机制,来保证MDC元数据的可靠性)

  MDC:client端(1、MDC的抢主机机制是通过ZK来实现的。

          2、ZK保存MDC的元数据,MDC启动时读取的元数据是通过ZK来读取的

          3、如果ZK集群是好的,MDC只要有一个是活的就可以正常工作,如果ZK集群挂了,MDC也不能正常工作。

          4、MDC之间的数据是会互相同步的。

         

 

MDC:管理元数据、分布式规则、数据重建规则、

OSD:具体的落盘规则
VBS:是将IO转化成转化成FS能够识别的key/value模式,给OSD。

 

ZK是投票选主,

MDC是注册选主,

         就是谁先向ZK注册,谁就是主MDC

OSD是由MDC指定谁是主OSD,因为MDC会生成一个partition视图(保存的是主备OSD的状态),而且partition视图是缓存在OSD里面的。

    IO视图也是由MDC生成的。作用是:partition视图对应的OSD的关系,将如何去找到数据落到那一块盘中。IO视图缓存在VBS里面的。

              OSD视图包括OSD  ID和状态,是OSD启动之后将信息报送给归属MDC,由MDC生成   

    

 

下图表示的是三个视图的组成的成分:

  

 

 

  IO视图的信息不会经过MDC,MDC只是负责计算IO视图(即当上层将IO视图发送到VBS,VBS应该将该IO视图发送给哪一个OSD),这个IO视图在VBS和OSD本地也会保存一份。如果OSD故障的话,那么IO视图就会发生变化。MDC就会修改IO视图,将IO视图同步给VBS,VBS拿到IO视图之后,会将自己的IO引流到另一个副本。

  partision视图是主备复制的重要环节,OSD收到IO后,会根据这个partision对应的副本在哪个OSD上,并发送复制请求给备副本所在的OSD。partision视图信息都是由MDC来维护的。

  OSD视图记录了OSD id和其对应的关系,例如UP/DOWN,OSD状态发生变化后先更新OSD 视图,在更新Partision 视图。

 

     MDC是采用一主两备的部署方式。当MDC模块进程启动后,会主动的向ZK注册选主,首先注册的会成为第一个主MDC。在MDC的运行过程中,ZK记录MDC主备信息,并且通过心跳机制去监控MDC的正常状态。一旦,主MDC故障,会触发MDC重新选主机制。

    主MDC和其他MDC互相监控心跳,一旦某个MDC故障后,主MDC将会决定谁来接替。其他MDC监控到主MDC故障,就会和ZK互动升任主MDC。

 

OSD如何找到归属MDC?

当OSD开始工作的时候,向MDC去查询归属MDC,查询到了,就向归属MDC报告状态,归属MDC把状态发送给VBS, 

 

posted on 2019-11-29 19:30  梅子酱~  阅读(3187)  评论(0编辑  收藏  举报