华为云计算IE面试笔记-简述Fusion Storage主要模块MDC,OSD,VBS,FSA及FSM的功能定位及交互关系

定位: Fusion Storage有两个管理系统组件:一个是FSM、一个是FSA; FSA包含:MDC、OSD、VBS三个进程(存储系统)

FSM(FusionStorage Manager): FusionStorage管理模块,提供告警、监控、日志、配置等功能,一般情况下主备节点部署。

FSA(FusionStorage Agent): 代理模块,部署在各节点上,实现各节点与FSM通信。

        FSA上的三个进程根据系统不同配置要求,分别在不同的节点上启用不同的进程组合来完成特定的功能。

  MDC(MetaData Controller):FusionStorage的元数据控制组件,是业务控制进程,实现对分布式集群的状态控制,以及控制数据分布式规则,数据重建规则,默认最少部署在3个节点上。一般部署在3个、5个或者7个节点上,形成MDC集群。

OSD(Object Storage Device):是FusionStorage的对象存储设备,是业务IO进程,执行具体的IO操作。在每个服务器上部署多个OSD进程,默认一块磁盘部署一个OSD进程。

VBS(Virtual Block System):是FusionStorage的虚拟块存储管理(将底层的对象存储伪装成块存储对外提供服务),是业务IO进程,负责卷、元数据的管理,提供分布式集群接入点服务,使计算资源能够通过VBS访问分布式存储资源。每个服务器上部署一个VBS进程,形成VBS集群。 

交互

1. MDC

1)MDC会与OSD、VBS进行消息之间的交互,通过心跳监测机制对OSD、VBS进行状态的监控。

2)MDC一般是主备管理。

3)MDC模块启动后,MDC向ZK注册选主,先注册的为主MDC,ZK记录MDC的主备信息并与MDC进行交互,ZK通过心跳监控MDC的健康状态,如果主MDC挂了,那么进行MDC的重新选主。

4)主 MDC 和其他 MDC 维持心跳关系,由主 MDC 指定其他 MDC 是否为归属 MDC,并告知归属 MDC 管理哪些存储池,主 MDC 决定归属 MDC 故障后的接替者。

2. OSD:

OSD 启动时,向 主MDC 查询归属 MDC,向归属 MDC 汇报自己的状态 归属 MDC 把状态发送给 VBS,OSD 与归属 MDC 维持心跳关系,默认每秒向MDC汇报OSD的状态,若是5秒内没有收到OSD的心跳,MDC会认为OSD故障,MDC将该OSD踢出存储池,更新 OSD View 到每个 OSD,更新 IO View 给 VBS, 在 5min 未收到心跳则进行数据重建。

3. VBS:

VBS启动时会查询主MDC,向主 MDC 注册(主 MDC 维持了一个活动的 VBS 列表,并同步给其他 MDC, 以便其他 MDC 能将 OSD 的状态变化发送给 VBS),向主 MDC 确定自己是否为 Leader VBS ,主VBS从主 MDC 获取 IO view,主VBS向OSD要元数据,其他 VBS 找主 VBS 获取元数据。一套FS只有一个主VBS,如果主VBS故障,其他VBS会重新向主MDC确认一个主VBS出来。

*FusionStorage组件、各组件间消息交互流程:

 

组件:

1) FusionStorage Manager:管理组件,提供 FusionStorage 告警,监控,日志,配置等操作的

2) FusionStorage Agent:FusionStorage agent 代理进程程序,部署在各个节点,实现与 FusionStorage Manager 通信。

3) MDC(MetaData Controller):元数据控制,分布式集群的状态控制,数据分布规则创建,数据重建规则创建。

4) VBS(Virtual Block System):虚拟块存储管理组件,卷和快照元数据的管理,IO 的接入和处理。

5) OSD(Object Storage Device):对象存储设备服务,磁盘管理,IO 复制,IO 数据的cache 处理。

6) zookeeper:作为一个开源的分布式应用协调系统,用来完成统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等工作。 

组件交互流程:

系统启动时,MDC 与 ZK 进行互动,选举出主 MDC,其他 MDC 挂掉,主 MDC 指定 MDC 接替此MDC 工作,主 MDC 挂掉,其他 MDC 与 ZK 互动,再次选举出主 MDC。

ZK 数量: 3/5/7,奇数原因: 因为 zookeeper 选举 leader 机制,n+1>n 总节点数: 2n+1控制集群创建完成后,数量不可更改。 

MDC 数量(3~96 个): 默认 MDC 数量为 3 个(创建 MDC 集群时与 ZK 数量一致),MDC 数量会随着存储池的数量上升而自动扩展。MDC 数量=ZK 数量+存储池数量。MDC 会管理存储池,一个 MDC 最多管理 2 个。 

OSD 启动时,向主 MDC 查询归属 MDC,并且向归属 MDC 反馈状态,归属 MDC 将 OSD 状态同步给 VBS,当归属 MDC down掉,主 MDC 指定一 MDC 接管,一个MDC 最多管理 2 个存储池,同时最多处理 2000 个 OSD 请求。

VBS 启动时,向主 MDC 注册(主 MDC 维护活动的多 VBS 列表信息,主 MDC 将 VBS 列表信息同步给归属 MDC,归属 MDC 将 OSD 状态信息同步给 VBS),VBS 向主 MDC 确定是否为主 VBS, VBS 向 MDC 查询 IO 视图,主 VBS 向 OSD 查询元数据信息,其他 VBS 向主 VBS 获取元数据。

 

 

<提示: 归属MDC运行在存储系统的存储节点上,注意,存储节点同时也可以是控制节点,所以当无独立的存储节点时,控制MDC同时担任归属MDC。

VBS运行在存储系统的计算节点上 >

*FusionStorage有哪些网络平面?并说明作用

1) 管理平面(External_OM): 用于FusionStorageManager与FusionStorageAgent之间的通信 

2) 存储平面(Storage_Data): 用于MDC、VBS、OSD之间通信 

3) 业务平面(External_OM): 用于OS与VBS之间通信 

<补充: 严谨来说,上述更应该称为通信平面。因OS与VBS之间通信的业务平面,有可能承载 SCSI、可有可能承载 iSCSI。显示,当承载 SCSI 时,其并非网络,而是本地调用。> 

*什么是无状态机头?

VBS就是无状态机头。元数据就是它的状态。不保存连接关系和位置信息,机头不保存 LUN 的元数据(通过 DHT 算法计算),LUN 不归属于某个机头,不易出现性能瓶颈;

*FusionStorage 整体 IO 流程

OS ---SCSI/iSCSI--->VBS---"key-value"--->OSD---SCSI--->disk 

VBS-->OSD:(判断是读 IO 还是写 IO,如果是读 IO,直接到本地读,如果本地受损,会到备的 OSD 中读。如果是写 IO,触发同步写机制,OSD 拿到 key-value,通过 DHT 找到备 OSD,完成写动作。)

1. 根据偏移量分片。(VBS 中的 VBP 模块对IO进行分片)

2. 形成 Key-value

3. 对 Key 值进行 hash,得到 32bit 值

4. Hash值进行 mod 运算,得到 partitionID

5. 查询 IOview,找到主 OSD,写数据

OSD-->disk:

1. 写请求:进行一次 DHT 算法找到备 OSD,同步写

2. 读请求:也需要进行 DHT 运算(通过 key 找到 partition,根据OSD的元数据表,找到 partition,定位到 partition 之后再小范围找到 key),读失败,还需要进行 DHT 算法,找出备 OSD,从备 OSD 中读出数据,返回结果给 VBS,进行修复。

DHT是 把IO以1m大小分片,把SCSI四元组中信息(读写的数据内容)+偏移量(LBA ID)和长度(LUN ID)转成key,对key 进行hash,然后对hash后的结果取模,分成3600份,得到partition id。

**FusionStorage 有哪些视图?存放在哪里?分别有什么作用?(考到)

主要有 OSD view、IO view、Partition view。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

魔仙堡的仙女

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

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

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

打赏作者

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

抵扣说明:

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

余额充值