FusionStorage逻辑架构,及工作原理
1、概念
Server SAN(又称为分布式存储):由多个独立的服务器组合在一起,将它们的计算存储资源融合在一起,形成一个资源池。(scale out,可线性扩展到4096个节点)
传统存储:只增加了存储能力,没有增加计算能力。传统存储的机头,一般有2控,但是可以扩大到16控。(scale up)
华为FusionStorage有三种:块存储、文件存储、对象存储。不同的应用场景用不同的应用方式。
FusionStorage是一款软件定义存储的分布式存储产品。它是软件、软件、软件!!重要的事情说三遍。
块存储:一般应用于两种场景(资源池、数据库)
文件存储:就是在块设备上,部署了一个文件系统。但是部署这个文件系统,会使其性能受到损耗。
一般文件系统,存储过程将文件按照文件系统的最小块打散,再写进硬盘,过程中,没有区分元数据和数据,而是在每个块最后才会告知下一个块的地址,因此,只能一个一个的读,速度相对来说,是比较慢的。
对象存储: 对象存储将元数据和数据分离出来,当用户访问数据的时候,会先去找元数据,然后由元数据去找后端具体的数据。
当用户访问对象时,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD。假设反馈文件A存储在B,C,D三台OSD,那么用户就会再次访问三台OSD服务器去读取数据。OSD服务器数量越多,传输速度就越快。
因此,对象存储很好的结合了块存储和文件存储的优点。
那为什么还要使用块存储和文件存储呢?
1、有一类应用性能要求很高,比如说,数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对了裸盘进行格式化,因此不能采用其他已经被格式化为某种文件系统的存储。此类更适合块存储。
2、对象存储的成本比普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了作文件共享的时候,直接用文件存储的形式就好了,性价比高。
FusionStorage的部署方式有两种:分离部署和融合部署。
分离部署就是把VBS和OSD分开,在不同的服务器上部署。
融合部署就是将VBS和OSD部署在一台服务器上。
原理图:
FusionStorage Manager:FusionStorage的管理模块,提供告警,监控,日志,配置等维护功能。一般情况下,主备部署。
FusionStorage Agent:代理进程,部署在各个服务器节点上,实现各节点与FSM通信。FSA包含MDC、VBS、OSD三种不同的进程。
MDC:元数据控制,实现对分布式集群的状态控制,以及控制数据分布式规则,数据重建规则等。MDC默认部署在3个节点的ZK(zookeeper)盘上,形成MDC集群。(创建存储池,主MDC会选择实施存储池的节点中产生一个新的MDC作为即将产生存储池的管理者:归属MDC,归属MDC会控制存储池的)
VBS:虚拟块存储管理组件,负责元数据的管理。提供分布式集群接入点服务,使计算资源能够通过VBS访问分布式存储资源(告知用户有一个存储提供接入点)。每个节点默认部署一个VBS进程,形成VBS集群。节点也可以通过部署多个VBS来提升性能。(VBS不属于任何资源池,某个VBS同时使用多个存储池的空间,VBS启动时轮询MDC,谁是主,MDC发现这个VBS,主MDC向其它归属MDC报告状态:VBS的相关信息。节点故障时,MDC修改IOview,完成后会把视图同步给VBS,VBS拿到后将自己的IO引流到另一个副本,VBS有所有MDC的数量和信息。VBS会根据地址对IO进行切片,按1M大小切片,不足1M也要切片。)
OSD:对象存储设备服务,执行具体的IO操作(通过内核完成)。在每个服务器上部署多个OSD进程,一块磁盘默认部署一个OSD进程(管理磁盘作用)。在SSD卡作主存时,为了充分发挥SSD卡的性能,可以在一张SSD卡上部署多个OSD进程进行管理,例如2.4TB的SSD卡可以部署6个OSD进程,每个OSD进程负责管理400GB。(OSD在存储池中,一个存储池有多个OSD,主VBS向存储池中的OSD索要卷的元数据)(两副本:存储池OSD数量12-96。三副本:存储池OSD数量12-2048)
ZK不是FS独有的,在FS中作为集群协调软件。