FusionStorage分布式存储
01FusionStorage是什么?
FusionStorage是什么?
FusionStorage是华为推出的一款可大规模横向扩展的分布式存储系统,其本质是将通用的X86、ARM服务器的本地已有的HHD磁盘,SATA盘,SAS盘,SSD盘等介质,利用分布式技术组成大规模存储资源池。利用软件系统模拟出SCSI和iSCSI接口向上层应用提供块存储服务,以满足云资源池及数据库等场景的存储需求。
FusionStorage存储系统分为了三个不同类型的版本:
1.FusionStorage Block(块存储)
2.FusionStorage File(文件存储)
3.FusionStorage OBS(分布式对象存储)
通常我们说FusionStorage是指Block版本,本文重点也是关于块存储。
FusionStorage 思想:
1.数据写入是随机的
2.存储的数据是均匀的分布在存储介质上
首先在创建存储池时,FusionStorage默认是在一块磁盘上部署一个OSD(进程),多个OSD接管上来的磁盘组成了一个地址空间,这就是存储池。
FusionStorage利用OSD所接管的底层磁盘提供存储的空间后,VM虚拟机等要想使用存储服务,首先就是能找到存储的地址。FusionStorage利用DHT分布式hash算法,将OSD提供上来的磁盘分成了2的32次方个地址块。每一个地址块用LBA ID作唯一标识,由于此地址空间过大,FusionStorage存储系统为了更好的管理与查找LBA ID,便将多个LBA ID组成的连续地址空间划分为一个Partition(区),DHT分布式hash算法的作用就是保存LBA ID与Patition的对应的关系(即LBA ID属于哪个一个Partition),与Patition对应OSD的关系(即Partition用到了哪个OSD提供上来的地址空间)。
Patition分区的个数是固定3600个。
FusionStorage的基础概念:
对于Key-value的补充,Key是写或读Value的路径。(也可以理解为Key是元数据)
02FusionStorage Block版本特点
FusionStorage Block版本特点
FusionStorage块存储具有高扩展性、高性能、高可靠性、高安全性及高易用性等特点,提供了双活、远程复制、快照等丰富的数据保护技术,具备重删和压缩、精简配置、QoS、Cache等高效的空间及性能分配技术,广泛兼容各种虚拟化平台及应用。
03FusionStorage组件与架构
FusionStorage组件与架构
FusionStorage软件中有很多组件,如MDC(Metadata Controller),VBS(Virtual Block Service),OSD(Object Storage Device)等,正是这些组件构成了这套块存储架构,FusionStorage具体组件如下:
FSM(FusionStorage Manager):FSM是用来管理存储的一个进程,可以实现系统的资源监控、配置、升级、扩容等等,此管理组件在安装部署时可以安装在虚拟机上,也可以单独部署在物理主机上,不过为了提高存储资源的可靠性必须是主备部署。
FSA(FusionStorage Agent):FSA是块存储软件管理的代理进程,FSA部署在各个计算节点、存储节点上,用来和FSM进行通信。(FSA中包含了三种子进程,根据不同的需求来部署MDC、OSD、VBS子进程)
MDC(Meta data Controller):MDC是元数据控制组件,主要实现对分布式集群的状态控制和数据分布规则,数据重建规则等。目前MDC官方定义可选择3个、5个、7个节点来启用MDC进程并作为控制集群,MDC利用ZK集群在在多个MDC中选取主MDC,主MDC对其他MDC进行监控,如果主MDC故障,则其他MDC根据与ZK通信再进行选举主MDC。每一个存储资源池都会有一个归属MDC,增加存储池同时也会自动启动一个MDC进程作为此存储池的归属MDC,一个套FusionStorage软件中最多启动96个MDC。
VBS(Virtual Block Service):VBS是虚拟块服务,VBS通过SCSI或iSCSI接口向上提供分布式接入点服务,是使用FusionStorage存储服务的入口。通过选择多个服务器启用VBS进程,形成VBS集群。
OSD(Object Storage Device ):OSD是对象存储设备,主要功能是接管底层存储介质,向上模拟出块对象存储,并处理VBS下发的IO流程,提供持久化存储。OSD进程主要是部署在存储节点上,一个服务器上正常启动一个OSD进程。(如果服务器的磁盘是SSD类型,为了提高SSD磁盘的性能,每400G次启用一个OSD进程)
ZK(ZooKeeper):ZK是一个分布式应用程序协调服务进程,ZK部署在控制集群的每个节点上,形成一个ZK集群来为MDC提供选主仲裁,ZK集群中的ZK存活数量要大于ZK总数才可以提供服务,在创建控制集群时会自动启动ZK进程。(ZK并不是FusionStorage块软件架构中的产品,是为了能对MDC进行选主操作,从而引进的开源Apache Hadoop项目下的分布式服务框架)
EDS(Enterprise Data Service):EDS进程是FusionStorage提供快照、重删、复制等企业级高可用特性,EDS在存储节点上会启用此进程。
CM(Cluster Manager):CM是集群管理进程,用于管理控制集群信息,当创建控制集群时会启动此进程。
CCDB(Cluster Configuration Database):CCDB是集群配置数据库,为存储集群提供配置信息(如双活Pair、远程复制Pair和一致性组信息等),当创建控制集群时会启动此进程。
FusionStorage逻辑架构如下:
04FusionStorage中的网络平面
FusionStorage中的网络平面
FusionStorage网络拓扑和网络平面:
BMC/管理网络:管理网络主要是指BMC带外管理和FusionStorage内部管理流量使用的网络平面。
1.BMC交换机连接到各个服务器Mgmt管理口用作带外管理。
2.FSA与FSM之间的管理指令下发网络平面。
业务网络:业务网络主要用作用户应用层下发SCSI/iSCSI流量到VBS的网络平面。
存储网络:存储网络平面主要是VBS和OSD或者OSD与OSD之间的数据通信,根据不同组件之间的通信划分为了“存储前端网络”、“存储后端网络”、“存储前后端共享网络”。
1.存储前端网络:VBS组件与OSD组件之间通信的网络平面。
2.存储后端网络:OSD组件与OSD组件之间存储复制网络平面。
3.存储前后端共享网络:VBS组件和OSD组件间数据通信和OSD组件与OSD组件间数据通信使用同一个存储网络平面时,称为前后端共享网络平面。
05FusionStorage部署模式
FusionStorage部署模式
FusionStorage在安装部署时,根据VBS组件和OSD组件是否部署在同一物理主机上,而分为了两种部署模式:
一.融合部署模式(VBS与OSD部署在同物理主机上)
二.分离部署模式(VBS与OSD部署在不同物理主机上)
一.融合部署模式分为了两种情况:
1.VBS部署在普通计算存储节点上
2.VBS部署在异构节点上(对接VMware)
VBS部署在普通计算节点上:
通常FusionStorage为4网口部署,跨网卡绑定,业务和管理融合部署,存储单独部署。
VBS组件与OSD组件部署在同一个节点上,虚拟机使用FusionStorage存储时使用SCSI协议。
VBS部署在异构节点上(VMware场景中):
在异构场景下,如果主机OS不支持安装FSA,也就意味着不能安装VBS/OSD等组件,在这种场景下,华为提供使用CVM虚拟机安装,在CVM虚拟机中根据需求来安装VBS或OSD,此场景下VM与VBS之间使用iSCSI协议通信。
二.分离部署模式分为了两种情况::
1.VBS部署在普通计算节点上
2.VBS部署在异构节点上(对接VMware)
VBS部署在普通计算节点上:
分离部署中VBS部署在计算节点上,OSD部署在存储节点上。在计算节点上不部署OSD进程,存储节点上不部署VBS进程。
VBS部署在异构节点上(对接VMware场景中):
在异构场景下,如果主机OS不支持安装FSA,也就意味着不能安装VBS/OSD等组件,在这种场景下,华为提供使用CVM虚拟机安装,在异构的物理服务上,安装CVM虚拟机,在CVM虚拟机中根据需求来安装VBS,此场景下VM与VBS之间使用iSCSI协议通信。
06FusionStorage的IO流程
FusionStorage的IO流程
FusionStorage的IO流程:
主机上应用APP通过OS上的启动器发送SCSI读写流到VBS模块,VBS将SCSI转换成Key-value(Key值是SCSI里的HostID,tegetID,channelID,lunID重组得到:HostID—>TreeID,tegetID—>BlockID,channelID—>snapID,lunID—>branceID)VBS中的VBP模块将下发下来的数据块进行切块(默认1M),VBS中的Client模块将Key值进行hash算法运算,将hash过后的值到DHT环上进行取模运算,得到对应的PartitionID,MDC模块将IOviow视图推送到VBS模块,VBS查找IOviow得到这个PartitionID所对应的主OSD信息,然后将Key-value发送给主OSD,主OSD将Key进行hash得到Partiton,之后MDC推送Partitonviow,OSD根据Partitionviow得到备OSD,然后通过RSM模块完成两副本的数据同步写。
FusionStorage的三种视图:
IOview:PartitonID与主OSD的对应关系。
Partitionview:主OSD与备OSD的关系,主OSD的Status,备OSD的status。
OSDview:OSD的ID,OSD的Status等信息。
07FusionStorage的副本机制
FusionStorage的副本机制
以三台存储节点,两副本、服务器磁盘容灾级的举例:
假设Server 01服务器盘都已物理损坏了,则在没有重构的情况下,Server 02或者Server 03都不可以在坏盘了,因为我们不能确定Server 02和Server 03坏的盘中是否有Server 01中最后的数据副本。但是,如果在Server 01服务器坏盘的同时,存储系统进行了数据重构了,则在Server 01机柜坏四块盘的情况下,Server 02可以坏3块盘,因为系统会自动将之前的数据写到Server 03服务器上,同理,如果Server 01机柜坏了,并且Server 02又坏了3块盘,这种情况下再进行数据重构后,Server 03最多坏3块盘。不重构的情况下最多坏4块盘,如果进行了数据重构则可以坏10块盘(6+3+3)
数据重构过程:
如果有一块磁盘物理损坏了,则与之对应的OSD进程产生了异常,OSD进程出现异常后,MDC进程会通过与OSD之间的心跳信息会中断,MDC会感应到此OSD状态异常,而DHT环会发现地址少了一块空间,因为OSD提供的地址空间被DHT环映射,MDC进程在5秒钟后如果还未收到此OSD的心跳后,则会修改OSDviow,同步到主MDC进程中,主MDC修改数据库信息,并且主MDC会同步到各个从MDC,还会修改IOviow,Partitionviow。修改IOviow是为了防止VBS在收到主机写IO请求的时候将数据落到此OSD所对应的故障盘,避免了写入失败。修改PartitionViow是为了将此坏盘上所对应的主OSD进程暂停,并将备OSD改为主OSD继续提供存储服务。
MDC如果在5分钟后还未收到OSD心跳,则会将此OSD踢出存储池。利用DHT重新建立DHT与OSD、Partition所映射的关系,DHT会更改坏掉的磁盘上对应的Partition,根据之前的副本将数据推送到其他的OSD接管的磁盘上。