FusionStorage Block 分布式块存储
华为存储分类
- 全闪存(OceanStor Dorado)
- 混合闪存(OceanStor V3 、OceanStor V5)
- 边缘数据存储(FusionCube)
- 分布式存储(OceanStor 100D)
- 数据保护存储(OceanProtect x)
存储组成部件
-
控制框
- 控制器
- 电源模块
- BBU
- 硬盘
- Smart IO模块
-
硬盘框
- 硬盘
- 级联模块
- 电源
传统SAN
- 孤立存储资源(一套存储设备只能提供给一个服务器使用,如果提供给多个服务器去使用,需要安装集群软件)
- 存储设备只能扩展容量(单方面提升),无法线性拓展
- 受限于控制器,Cache和网络带宽瓶颈
Server SAN
- 由本地服务器的本地硬盘组合成资源池,同时融合了计算和存储资源
- 无需采用专门的存储设备,管理简单,降低成本
- 计算和存储性能双提升,实现线性扩展
FusionStorage 分布式块存储(华为Server SAN产品)
-
介绍
-
定义
- FusionStorage 分布式块存储是一款可大规模横向扩展的存储产品,通过存储系统软件将服务器的本地存储资源组织起来,构建全分布式存储池,通过SCSI和iSCSI接口向上层应用提供块存储服务,满足云资源池及数据库等场景的存储需求。
-
特定(区别于传统存储)
-
高扩展性
- 传统存储设备:扩展存储需增加控制器个数或者更换设备
- FusionStorage:容量与性能线性增加,性能超越中高端存储
-
高性价比
- 传统存储设备:成本随性能提升大幅增加;存储更新换代速度快
- FusionStorage:支持融合部署,通用X86服务器堆叠扩展,节约成本;网络扁平化,扩容简单;既有设备利旧,保护投资
-
高可靠性(故障业务无影响)
- 传统存储设备:硬盘故障需立即更换,实时手动恢复;
- FusionStorage:提高服务器间,柜间可靠性;硬盘故障无需管理,自动数据重建恢复;
-
并行快速数据重建
- 传统存储设备:数据重建满(重建1TB 需要12小时)
- FusionStorage:数据分部跨服务器,机柜,故障后在全资源池内重建数据(重建1TB数据小于10分钟)
-
-
-
架构和组件
-
管理节点(FSM)
- FusionStorage管理模块,提供告警,监控,日志,配置操作维护功能。一般情况下FSM主备节点部署。
-
存储节点(FSA)
-
FusionStorage Agent 代理进程,部署在各个节点,实现各节点和FSM通信,FSA包含MDC,VBS,OSD等不同的进程。根据系统不同配置要求,分别在不同的节点启用不同的进程组合来完成特定的功能。
-
组件
-
MDC集群
-
ZK
- Zookeeper 负责完成分布式框架的工作,如统一命名服务,状态同步服务,集群管理,分布式应用配置项的管理。主要工作包括维持MDC主备关系,提供视图存储,维护自身主备的数据同步。ZK数量相等于MDC数量,一般为至少3个,可为3,5,7,9个
-
MDC
- MetaData Controller 元数据控制组件,分为控制MDC和归属MDC,控制MDC负责规则管理(但视图存储在ZK空间),归属MDC负责管理存储池并监控状态,数量与ZK数量保持一致,一般为主多备部署。
-
-
VBS集群
- Virtual Block Service 提供访问使用存储的入口和卷和快照的管理功能,相当于控制器的角色
-
资源池
-
OSD
- Object Storage Service 处理VBS下发的IO消息,执行具体的IO操作,相当于硬盘框的角色,分为主OSD和备OSD。一个物理硬盘对应一个OSD进程,主要负责磁盘管理,IO复制,数据的读写Cache处理
-
-
CM
- Cluster Manager集群管理进程,用于管理控制集群的信息,创建控制集群时,会启动CM进程
-
CCDB
- Cluster Configuration Database ,集群配置数据库,保存集群配置信息,如双活Pair ,远程复制Pair和一致性信息
-
EDS
- Enterprise Data Service 提供高级特性,如快照,重删,复制,加入存储池的服务器会开启EDS进程
-
-
-
-
网络平面
- 管理平面:与用户管理网络对接的平面,用于进行系统管理和维护
- BMC平面:用于接入管理节点/存储节点Mgmt接口,提供远程硬件设备管理功能
- 存储平面:内部平面,用于系统内部所有节点之间的业务数据通信
- 业务平面:与客户应用对接,通过iSCSI/SCSI等标准协议访问存储
- 复制平面:用于复制节点间进行数据同步复制
- 仲裁平面:用于与双活仲裁服务器进行通信,只有块服务规划双活功能时才会规划该平面
-
部署方式
-
融合部署
- 将VBS和OSD部署在同一台服务器,虚拟化应用推荐采用融合部署的方式
-
分离部署
- 将VBS和OSD分别部署在不同的服务器,高性能数据库应用推荐采用分离部署(VBS和OSD为进程,会损耗服务器的资源)
-
-
工作机制
-
视图信息
- OSD (View OSD ID 、OSD Status) 为归属MDC使用
- Partiton View ( Partion ID 、 主备OSD 、主备OSD Status) 为主OSD使用
- IO View( Partion ID 、OSD主)为VBS使用
-
组件初始化
- 系统启动时,MDC与ZK互动决定主MDC。主MDC与其它MDC相互监控心跳,主MDC决定某MDC故障后接替者。其它MDC发现主MDC故障又与ZK互动升任主MDC
- OSD启动时向MDC查询归属MDC,向归属MDC报告状态,归属MDC把状态变化发送给VBS。当归属MDC故障,主MDC指定一个MDC接管,最多两个池归属同一个MDC
- VBS启动时查询主MDC,向主MDC注册(主MDC维护了一个活动VBS的列表,主MDC同步VBS列表到其它MDC,以便MDC能将OSD的状态变化通知到VBS),向MDC确认自己是否为leader;VBS从主MDC获取IO View,主VBS向OSD获取元数据,其它VBS向主VBS获取元数据
-
数据路由
-
系统初始化
- 哈希空间N等化形成分区,并建立分区和硬盘的映射关系表
- OSD按照1MB对为单位对硬盘进行分片管理,并在硬盘的元数据管理区域记录每个1MB分片的分配信息
-
应用程序下发IO请求
- APP下发SCSI请求指令,其中包含LUN ID,LBA ID(LBA为寻址方式),及数据内容转交到操作系统,再由操作系统请求VBS
-
VBS处理IO请求
- VBS接收IO请求后,将LUN ID 和 LBA ID 转化为Key值,对Key值哈希得出结果落入DHT分区上,通过IOview 找到对应的主OSD
-
OSD处理IO请求
- 主OSD判断IO请求,如果是读请求,直接到硬盘读取数据给予返回,如果是写IO请求,需要通过Partition View找到备OSD完成其他副本数据的写入
-
-
读写机制
-
读机制
-
读Cache
- 采用分层机制,第一层为内存Cache,第二层为SSD Cache(热点读机制,即通过设定阈值,把访问频率高的数据缓存到SSD中,而访问频率高的数据则移出SSD)
-
预读(智能读)
- 通过统计读数据的相关性,读取某块数据时自动将相关性高的块读出并缓存到SSD中
-
-
写机制
-
写Cache
- OSD在收到VBS发送的写IO操作时,会将写IO缓存在SSD cache后完成本节点写操作
-
刷盘策略
- 周期和水位,OSD会周期将缓存在SSD cache中的写IO数据批量写入到硬盘,写Cache有一个水位值,未到刷盘周期超过设定水位值也会将Cache中数据写入到硬盘中,水位优先级高于周期
- 大块直通,按缺省配置大于256KB的块直接落盘不写Cache,这个配置可以修改
-
-
-
-
FusionStorage 配置流程
- 增加管理节点
- 增加存储节点
- 配置存储网络
- 安装存储节点
- 创建控制集群
- 创建存储池
-
业务SCSI和iSCSI配置流程
-
业务SCSI
- 增加计算节点
- 创建VBS
- 创建卷
- 创建VBS与卷的关联
-
业务iSCSI
- 配置iSCSI服务
- 创建主机
- 添加启动器(IQN)
- 创建卷
- 创建卷与主机的关联
-