前面我们用了两篇文章谈了EMC ScaleIO的部署,今天我们来聊聊华为FusionStorage的部署。

华为FusionStorage的定位和EMC的ScaleIO是比较类似的,都支持多种Hypervisor,支持融合部署,也支持分离部署。但是,FusionStorage采用了互联网大规模场景下的很多算法,如用DHT(分布式哈希表)来实现非集中式元数据管理,理论来说,扩展性更好一些(目前ScaleIO宣传支持1024个节点,FusionStorage宣传支持4K个节点)。

FusionStorage架构原理

在谈FusionStorage部署前,我们先来了解其架构原理。

FusionStorage采用分布式集群控制技术和DHT路由技术,提供分布式存储功能特性。FusionStorage功能架构图如下所示:

存储接口层:通过SCSI/iSCSI驱动接口(注意不是物理接口)向操作系统、数据库提供卷设备。

存储服务层:提供各种存储高级特性,如快照、链接克隆、精简配置、分布式cache、容灾备份等。

存储引擎层:FusionStorage存储基本功能,包括管理状态控制、分布式数据路由、强一致性复制技术、集群故障自愈与并行数据重建子系统等。

存储管理层:实现FusionStorage软件的安装部署、自动化配置、在线升级、告警、监控和日志等OM功能,同时对用户提供Portal界面。

FusionStorage逻辑架构图如下图所示:

FusionStorage Manager:FusionStorage管理模块,提供告警、监控、日志、配置等操作维护功能,主备节点部署。

FusionStorage Agent:代理进程,部署在各节点上,实现各节点与FusionStorage Manager通信。

MDC(Meta Data Controller):元数据控制软件,实现对分布式集群的状态控制,以及控制数据分布式规则、数据重建规则等。 MDC默认部署在3个节点上,形成MDC集群。

VBS(Virtual Block System):虚拟块存储管理组件,负责卷元数据的管理,提供分布式集群接入点服务,使计算资源能够通过VBS访问分布式存储资源。每个节点上默认部署一个VBS进程,形成VBS集群。节点上也可以通过部署多个VBS来提升IO性能。

OSD(Object Storage Device):对象存储设备服务,执行具体的I/O操作。在每个服务器上部署多个OSD进程,一块磁盘默认对应部署一个OSD进程。在SSD卡作主存时,为了充分发挥SSD卡的性能,可以在1张SSD卡上部署多个OSD进程进行管理,例如2.4TB的SSD卡可以部署6个OSD进程,每个OSD进程负责管理400GB。

从结构上来说,FusionStorage本身并不提供物理的iSCSI接口,而是通过VBS来提供。也就是说,需要访问的SERVER SAN的主机必须安装VBS,因为VBS提供了分布式集群接入点服务。从这个意义来说,其接入功能和EMC ScaleIO的SDC类似。

FusionStorage最大的特点就是DHT了。FusionStorage采用DHT(DistributeHash Table,分布式哈希表)路由数据算法。每个存储节点负责存储一小部分数据,基于DHT实现整个系统数据的寻址和存储(DHT华为首先在其云存储OceanStor UDS上采用,后来设计FusionStorage的时候借用了这个算法)。

相比DHT路由算法,传统存储一般采用集中式元数据管理方式,元数据中会记录所有LUN中不同偏移量的数据在硬盘中的分布,例如LUN1+LBA1地址起始的4KB长度的数据分布在第32块硬盘的LBA2上。每次IO操作都需要去查询元数据服务,随着系统规模逐渐变大,元数据的容量也会越来越大,系统所能提供的并发操作能力将受限于元数据服务所在服务器的能力,元数据服务将会成为系统的性能瓶颈。不同与传统的集中式元数据管理,FusionStorage采用DHT(分布式一致性哈希)进行数据寻址,具体的算法如下图:

FusionStorage将哈希空间设置为2^32,并将该哈希空间划分为N等份,每1等份是1个分区(Partition),这N等份按照硬盘数量进行均分。例如:系统N默认为3600,假设当前系统有32块硬盘,则每块硬盘承载100个分区。上述“分区-硬盘”的映射关系在系统初始化时会分配好,后续会随着系统中硬盘数量的变化会进行调整。该映射表所需要的空间很小,FusionStorage系统中的节点会在内存中保存该映射关系,用于进行快速路由,可见,FusionStorge的路由机制不同于传统阵列,并没有集中的元数据管理,也就不存在元数据服务成为系统的性能瓶颈。

FusionStorage采用数据多副本备份机制来保证数据的可靠性,即同一份数据可以复制保存为2~3个副本。针对系统中的每1个卷,默认按照1MB进行分片,分片后的数据按照DHT算法保存集群节点上。

了解了FusionStorage的原理,下面我们来谈谈部署。

VMWARE部署场景

融合部署情况下,需要一个单独的控制VM,把OSD和VBS都部署在这个VM上。其他的USER VM无需部署VBS。我们回顾一下ScaleIO的部署,发现还是ScaleIO和VMware结合得更加紧密一些,因为ScaleIO的SDC可以部署在Hypervisor内核里。据说VMware是开放这个接口的,也就是说理论上华为也可以把VBS部署在Hypervisor这一层。但VBS不仅仅要接入,还有卷元数据的管理,功能上并不是和ScaleIO的SDC一样。因此,不知道放入Hypervisor合不合适?

如果采用分离部署,控制VM里面只需要部署VBS模块,OSD模块单独部署到别的物理机器上(采用Suse Linux)。User VM通过VM IO iSCSI接口,通过VBS访问相应的OSD。

华为UVP部署场景

华为UVP平台在融合部署情况下,OSD和VBS模块部署在Domain0中,服务器PCIE SSD或者SCSI Controller下的硬盘或者SSD盘pass through到Domain0中的OSD进行介质管理,节点内的用户VM访问本节点Domain0VM中VBS提供的存储服务。

如果采用分离式部署,OSD模块部署在独立的存储服务器,采用Huawei UVP OS,负责管理本服务器的PCIE SSD或者SCSI Controller下的硬盘或者SSD盘,VBS模块部署在Domain0中,节点内的用户VM访问本节点Domain0 VM中VBS提供的存储服务。Huawei UVP和Domain0安装在本服务器介质设备中。

KVM部署场景

在融合部署场景下,OSD和VBS模块部署在KVM OS中,服务器PCIE SSD或者SCSI Controller下的硬盘或者SSD盘pass through到OS中的OSD进行介质管理,节点内的用户VM访问本节点OS中VBS提供的存储服务。

如果采用分离式部署,把OSD独立部署到单独的物理服务器就可以了。

管理模块部署

融合部署和分离部署主要是考虑了VBS和OSD的情况,还需要考虑MDC和管理模块的部署。

  • MDC部署:

MDC默认部署在3台服务器中,也可以根据需求部署5个。MDC需要部署在OSD所在的服务器中,其中的zookeeper需要使用服务器的本地存储。

  • FusionStorage Manager部署:

FusionStorage Manager以虚拟机方式部署,支持部署在VMWare、FusionSphere和KVM虚拟化环境中。FusionStorage Manager虚拟机需要安装在本地硬盘中。FusionStorage Manager需要部署在2个VM中,采用主备工作方式。

  • FusionStorage Agent部署:

FusionStorage Agent部署在FusionStorage Manager/VBS/OSD/MDC所在的服务器中,负责FusionStorageManager/VBS/OSD/MDC的进程管理和OM管理。

网络规划

(这部分内容摘自华为云计算官微 2015-11-12发表的 “FusionStorage微讲堂11期 | FusionSphere+FusionStorage场景网络设计规划”一文) 网络要求

  • 存储平面支持IB网络,但不支持混合组网。

  • 网卡和网络类型:GE(TCP/IP协议)、10GE(TCP/IP协议)、IB(RMDA协议)。

  • 推荐存储平面使用独立的网卡,不和其他平面共用网卡,以免不同平面之间网络互相影响。

组网示意图

10GE/IB网络,4网口场景

1)eth0~eth1绑定为主备或负载均衡模式,走管理平面和业务平面的网络流量。

2)存储平面可使用10GE(eth2~eth3),也可支持IB组网(ib0~ib1),但不支持混合组网,使用10GE组网时将两个网口绑定为主备或负载均衡模式。

3)存储平面ip通过在FusionCompute Portal上添加存储接口生成,使用IB组网时按照FusionStorage产品文档中的步骤将ib0和ib1组一个Bond,配通IB网络,主机之间存储平面的ip互通即可,无需和外部互通。

*** 10GE/IB网络,6网口网络**

1)eth0~eth1绑定为主备或负载均衡模式,走管理平面的网络流量。

2)存储平面可使用10GE(eth2~eth3),也可支持IB组网,但不支持混合组网,使用10GE组网时将两个网口绑定为主备或负载均衡模式。

3)存储平面ip通过在FusionCompute上添加存储接口生成,使用IB组网时按照FusionStorage产品文档中的步骤将ib0和ib1组一个Bond,并配通IB网络,主机之间存储平面的ip互通即可,无需和外部互通。

4)eth4~eth5绑定为主备或负载均衡模式,走业务平面网络流量。

说明

两网口绑定为负载均衡模式时,须连接在一个交换机上(或两个堆叠的交换机),且和两个网口连接交换机端口绑定为链路聚合。

FusionStorage IP规划

单套FusionStorage所需管理IP为3+1*N,N为计算和存储节点的管理节点之和;单套FusionStorage所需存储IP为M,M为存储节点数量。

【学习心得】

从EMC ScaleIO和华为FusionStorage的部署情况看,两者定位类似,部署思路也类似,但双方底层原理不同,特别是管理模块的部署上区别比较大。华为的模块分得太细,因此感觉部署起来要复杂一些。其实,FSA组件完全可以融入到VBS和OSD里面,没有必要独立出来。还有,FSM也可以融入MDC集群里,这样部署起来更加简单些。分得太细,针对大规模部署场景下会比较灵活,但针对企业场景的确有点复杂。