FusionStorage原理及组件
目录
一、FS的部署模式
1)融合部署
2)分离部署
3)scsi和iscsi使用场景
二、FS的灾备
FS的高级特性
三、FS的DHT算法
四、存储池和卷
五、FS的可靠性和安全级别
可靠性
安全级别
六、VBS结构
scsi:将内核态VSC模块的scsi流引入VBS用户态
七、OSD结构
八、FS的IO流程
1)写IO
2)读IO
九、ZK的作用
MDC主备管理:
数据存储
数据同步
十、FS的视图
十一、FS组件交互过程
1)创建控制集群 自动ZK 控制MDC
2)创建存储池
3)创建块客户端
一、FS的部署模式
1)融合部署
VBS和OSD合部在同一节点
2)分离部署
VBS和OSD分开部署在不同的节点
3)scsi和iscsi使用场景
业务与VBS是否合部
如果合部---scsi
如果分开部署在不同节点----iscsi
无论是scsi还是iscsi,都支持融合部署和分离部署
通常在应用场景上考虑是融合还是分离,多在scsi场景考虑
scsi场景下
如果业务需要大量计算资源保障,此时考虑分离部署----关键业务系统,例如数据库
如果服务器主机有足够计算资源支持业务和FS的组件运行,此时考虑融合部署----云场景
融合部署的成本低于分离部署
二、FS的灾备
备份主要用来保证业务的安全性
容灾主要作用是保护业务的连续性
容灾又分为异地容灾和同城容灾
FS作为生产存储支持ebakcup或者第三方备份管理软件的备份
FS的高级特性
双活
hyper metro
远程复制(异步)
hyper replication
可以实现存储层容灾
三、FS的DHT算法
DHT(分布式哈希表,Distrubuted Hash Table)
111 698d51a19d8a121ce581499d7b701668
112 7f6ffaa6bb0b408017b62254211691b5
将十进制的数,转化为2的128次方的数,就可以实现平均切随机
一个存储池对应一个DHT环(逻辑)
读写流程:
1.scsi流交给vbs--->vbs转换scsi流为key-value
2.对key值进行--->hash寻址
目的:将主机下发的IO平均且随机的落到存储池各个OSD对应硬盘上
也就是为了实现IO 的负载均衡
3.经过hash得到一个2的32次方的数值--->模运算-->得到patition
目的:缩减表的尺度,加速查找DHT环
4.查询由MDC维护的映射表记录的是patition和osd的关系patition--->得到osd
目的:解决坏盘或者扩容场景,准确定位patition对应的osd位置
5.osd做key-value到iscsi流的转化,做磁盘的读写操作
四、存储池和卷
存储池是由一组服务器本地硬盘构成,硬盘类型相同、容量相同、参数相同等限制(参考产品文档)
主存类型:SATA机械 SAS机械 SAS-SSD SATA-SSD NVME SSD盘、SSD卡
一块硬盘只能属于一个存储池
一个存储池可以划多个卷(划卷依赖vbs)
一个卷只能属于一个存储,不能跨存储池
卷可以通过scsi挂载给vbs或者iscsi映射给业务主机使用
一个主机可以使用多个卷,多个卷可以来自不同存储池
五、FS的可靠性和安全级别
可靠性
副本机制:
2副本--50% 3副本--33.3%
EC机制: M=2,3,4 N最大22
EC(Erusure code)算法,分布式raid算法,可以跨界点raid
N+M 坏M块硬盘或者M个节点数据不丢失,业务不中断
N是数据分片
M是校验分片
N+M:B 坏M块硬盘或者B=1个节点数据不丢失,业务不中断
22+2保护 高达91%空间利用率
安全级别
FSM配置界面创建存储池仅支持服务器级和机柜级
服务器级安全:数据副本或者EC的数据分片一定不会放在同一个服务器节点内
机柜级安全:数据副本或者EC的数据分片一定不会放在同一个机柜内
机房级安全:数据副本或者EC的数据分片一定不会放在同一个机房内
不同的存储池可配置不同的数据保护方式和安全级别
六、VBS结构
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结构
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获取卷的元数据。
FusionStorage原理及组件相关推荐
- Serverless 实战 —— Serverless 的运行原理与组件架构
Serverless 的运行原理与组件架构 本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流, ...
- 机器学习运维(MLOps):原理、组件、角色和架构
标题:Machine Learning Operations (MLOps): Overview, Definition, and Architecture 作者:Dominik Kreuzberge ...
- spring mvc工作原理及组件说明
组件说明 以下组件通常使用框架提供实现: DispatcherServlet:前端控制器 用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由 ...
- 工作265:v-model实现原理 自定义组件使用v-model
v-model只是一个语法糖,等于:value+@input,真正的实现靠的还是: v-bind:绑定响应式数据,触发 input 事件并传递数据 (核心和重点) 1 其实和下面一样的 <in ...
- 简述Veeam备份原理和组件功能
Veeam备份与复制的主要组件包括以下几个: Veeam Backup & Replication Server: 这是Veeam解决方案的核心组件.它负责协调所有的备份.复制和恢复任务,包括 ...
- React双向数据绑定原理---受控组件
受控组件:React将state与表单元素的值value绑定到一起 代码:(多表单组件单一写法) 每个要绑定的元素都要写一遍onChange事件,比较繁琐 import React from 'rea ...
- 开源免费的 LoRa App 设计原理和组件
为了帮助 LoRa 用户演示数据和调试开发,开源免费的 LoRa App 推出后深受好评. 下载与使用请链接<开源免费的手机版 LoRa App,演示和调试 LoRaWAN 数据的神器> ...
- 射频原理和组件介绍:学习如何在频域中分析射频(RF)问题
什么是频域?为什么它对射频(RF)设计,分析和测试如此有价值? 熟练掌握射频(RF)设计过程中最基本的步骤之一就是学会在频域中进行问题思考.对于我们大多数人来说,我们在电路和信号方面的早期经验绝大部分 ...
- 华为云计算HCIE学习笔记-FusionStorage
专业阵列介绍(不是FS): 一个交换机上连有几个CNA和一个VRM,CNA连接着SAN交换机,SAN交换机连着专业的Array阵列,它是由一个控制框和几个硬盘框组成的.控制框如果是双控制器的话(双活控 ...
- 从零实现Vue的组件库(十)- Select 实现
当选项过多时,使用下拉菜单展示并选择内容. Select 组件主要特点在于: 数据双向绑定,下拉列表变动时,选中项如何回显: 单选.多选的区分,以及对应处理. 1. 实例 代码 <fat-sel ...
最新文章
- [翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率
- EmguCV学习遇到的问题记录
- 六年级计算机应用计划,六年级信息工作计划
- 2020 年区块链最具影响力人物 Top 20,孙宇晨也上榜了
- ubuntu下安装JDK以及配置
- 接口自动化测试框架必备的9个功能举例
- OSS SSL 访问异常
- 一种增加先验知识库的贝叶斯网络推理模型
- MatConvnet工具箱文档翻译理解四
- pythonjson构建二维数组_在Python中从JSON构建表
- pixmap和label设置图片自适应大小
- 电子通信协议之CAN总线协议篇
- 合成大西瓜小游戏微信小程序源码/微信游戏小程序源码
- 高德地图集成之基础定位
- 高仿国美在线 顶部实现
- Hdu 5064 Find Sequence 解题报告
- 荷兰国旗问题python_荷是什么意思 荷字五行属什么
- TWS耳机供应链,看看背后都有谁?
- linux 系统启动服务setup设置
- Android软件测试外文文献,软件测试中英文对照外文翻译文献
热门文章
- ireport oracle,用ireport调用oracle存储过程
- 计算机减法函数word,Word中减法公式怎么用
- C练题笔记之:Leetcode-1427. 字符串的左右移
- python和c 情侣网名_简单情侣网名的介绍
- java神兽传说游戏,了不起的神兽传说
- BEC higher经验1
- Android开发笔记——视频录制播放常见问题
- android 阅读器字体,Android字体设置及Roboto字体使用方法
- 做数据分析如何选择适合的数据图表(5类分析方法)
- idea下载postgresql的驱动失败Failed to download ,报connect timed out的解决方法