FusionStorage原理及组件(二)

简介: FusionStorage原理及组件(二)

六、VBS结构


image.png


scsi:将内核态VSC模块的scsi流引入VBS用户态

VBP:scsi流转换成key-value


client:key--hash---mod--patition--查io-view--主OSD 走存储网络平面将io流转发至主OSD


VBM:卷和快照生命周期管理操作  创建卷、挂载卷、卸载卷、查询卷、删除卷、创建快照、删除快照、基于快照创建卷等


hearbeat:心跳模块  通过存储平面与MDC交互心跳包  使MDC维持VBS view状态视图


七、OSD结构


image.png


RSM:复制协议实现。


SNAP:实现卷与快照的IO功能、磁盘空间的管理。


CACHE:实现cache功能。


AIO:实现异步IO下发到底层SMIO模块和通过调用SMIO接口来监控介质故障。


SMIO:下发到IO到实际的物理介质、监控物理介质故障、获取磁盘信息。


八、FS的IO流程



1)写IO

APP--》OS--》scsi/iscsi---》VSC内核模块接收---》scsi initiator--》scsi target---》VBP(LUN ID/LBA ID/length-->key data-->value)


---》client(key--hash--mod--patition--查io view--主OSD)---》主OSD(key--hash--mod--patition--查patition view--备OSD)--》主OSD一方面下发写IO到本端cache,一方面通过RSM复制IO到备OSD---》主备OSD同步写cache成功--》由主OSD返回VBS写成功(回写),VBS返回APP写成功。


2)读IO

APP--OS--scsi/iscsi---VSC内核模块接收---scsi initiator--scsi target---VBP(LUN ID/LBA ID/length-->key data-->value)---client(key--hash--mod--patition--查io view--主OSD)---主OSD


1、主OSD正常,先读cache,如果cache读命中,返回读成功,如果未读命中,主OSD向主存disk查询读数据。


2、主OSD异常,MDC会检测硬盘异常触发退盘,修改视图(OSD view  IO view  Patition view),指导VBS引流到备OSD(新主OSD读数据),先读cache,如果cache读命中,返回度成功,如果未读命中,主OSD向主存disk查询读数据。


九、ZK的作用



Zookeeper(简称ZK)分布式服务框架主要用来解决分布式应用中经常遇到的,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等,ZK主要工作包括三项:


MDC主备管理:

MDC采用一主两备部署模式;在MDC模块进程启动后,各个MDC进程会向ZK注册选主,先注册的为主MDC;运行过程中,ZK记录MDC主备信息,并通过心跳机制监控MDC主备健康状况,一旦主MDC进程故障,会触发MDC重先选主。


数据存储

在MDC运行过程中,会生成各种控制视图信息,包括目标视图、中间视图、IO视图信息等,这些信息的保存、更新、查询、删除操作都通过ZK提供的接口实现。


数据同步

数据更新到主ZK,由主ZK自动同步到备ZK,保证主备ZK数据同步,一旦ZK发生主备切换,业务不受影响


为什么奇数部署ZK


在ZK集群中,如果大于等于半数ZK节点宕机那么整个集群不可用


比如部署4个ZK,是只允许坏一个ZK


部署3个ZK,也是只允许坏一个ZK


部署3台和4台都是只允许一台宕机,既然是同样的容错能力,那么考虑节省服务器资源,所以推荐奇数部署


帮助MDC选主


持久保存MDC管理的系统元数据


帮助MDC实现元数据同步


十、FS的视图



VBS view   VBSid---VBS status


OSD view   OSDid---OSD status


IO view    patitionid----主OSD


Patition view   patitionid---主OSD/备OSD--主备OSD的status


视图持久化保存在ZK盘或者ZK分区


MDC所在主机内存缓存所有视图


VBS所在主机内存缓存io view


OSD所在主机内存缓存 patition view


十一、FS组件交互过程



1)创建控制集群   自动ZK  控制MDC

ZK启动形成ZK集群,MDC找ZK注册,最先注册成功的为主MDC,MDC与ZK位置心跳,MDC通过ZK形成集群关系


主MDC故障,其他MDC与ZK联动重新注册选举主MDC


备MDC故障,上报FSM,管理员看到进程异常告警及时处理


2)创建存储池

主MDC确定是否需要启动新的归属MDC管理该存储,或者用现有MDC作为该存储池归属MDC管理存储池


如果归属MDC故障,由主MDC决定归属MDC的接替者


一个归属MDC最多管理2个存储池


启动OSD,OSD向MDC查询自己的归属MDC,向归属MDC上报状态,维持心跳


如果OSD异常,超过5S,归属MDC检测OSD异常修改视图,数据引流、数据重建


3)创建块客户端

VBS启动时查询主MDC,向主MDC注册


主MDC维护了一个活动VBS的列表,主MDC同步VBS列表到其它MDC,以便MDC能将OSD的状态变化通知到VBS


VBS向主MDC确认自己是否为leader(最先注册成功的为主)


VBS从主MDC获取IO View


主VBS向OSD获取元数据,其它VBS向主VBS获取卷的元数据。


相关文章
|
2月前
|
存储 Prometheus Cloud Native
Thanos 工作原理及组件简介
Thanos 工作原理及组件简介
|
JavaScript
【Vue3从零开始-第三章】3-5 父子组件之间事件通信
【Vue3从零开始-第三章】3-5 父子组件之间事件通信
1926 0
【Vue3从零开始-第三章】3-5 父子组件之间事件通信
|
9天前
|
前端开发 JavaScript 算法
react【框架原理详解】JSX 的本质、SyntheticEvent 合成事件机制、组件渲染过程、组件更新过程
react【框架原理详解】JSX 的本质、SyntheticEvent 合成事件机制、组件渲染过程、组件更新过程
13 0
|
2月前
|
JavaScript 前端开发 API
【前端--Vue】组件之间的多种通信方式,一文彻底搞懂组件通信!
【前端--Vue】组件之间的多种通信方式,一文彻底搞懂组件通信!
【前端--Vue】组件之间的多种通信方式,一文彻底搞懂组件通信!
|
2月前
|
缓存 JavaScript 前端开发
简述一下组件的生命周期
在进行组件化项目开发的时候都会存在一个组件的生命周期概念,像Vue、React、小程序等等,无一例外,而通常情况组件的生命周期主要分成三个阶段,包括:创建、更新以及销毁阶段。
59 0
|
移动开发 开发框架 JavaScript
什么是组件,以及前端各种框架组件的使用方法
什么是组件,以及前端各种框架组件的使用方法
211 1
|
存储 缓存 监控
FusionStorage原理及组件
FusionStorage原理及组件
326 0
|
JavaScript
Vue——05-01组件的基本使用、全局组件,局部组件、父子组件的区别、注册组件的语法糖以及分离写法
组件的基本使用、全局组件,局部组件、父子组件的区别、注册组件的语法糖以及分离写法
89 0
|
缓存 安全 JavaScript
Yii2.0的视图渲染机制是怎样的?底层原理是什么?
Yii2.0的视图渲染机制是怎样的?底层原理是什么?