【应用】撩开分布式存储神秘面纱

2018-04-13 20:13:17 大云网  点击量: 评论 (0)
我们在2011年开始研究试验云计算技术,到2013年形成了长距双活资源池体系,并引入SDNOverlay技术进行测试和试点,通过SDN实现弹性网络资源...

我们在2011年开始研究试验云计算技术,到2013年形成了长距双活资源池体系,并引入SDNOverlay技术进行测试和试点,通过SDN实现弹性网络资源池,强化网络自动化部署能力,加快资源交付时间。资源池中计算、网络弹性部署能力相对较强,而原先资源池存储主要采用的传统集中FCSan技术,在面对资源池各种各样存储需求时逐渐成为瓶颈,存储技术门槛高、成本高、并发IO受限、线性扩展能力差以及不具备按需分配的能力成为急需要解决的问题。于是萌发了想利用传统的X86服务器+廉价的SATA盘作为块存储的想法。2013年的10月,在杭州西湖边的青腾茶馆第一次遇到了顾炯炯大师,在交流了华为的虚拟化软件的同时,我也讲了基于X86存储的基本想法,炯炯大师表示华为已经在开发基于X86分布式块存储,预计可以在2014年开发完成。现在回想起来,当时炯炯大师的说法给我很大的信心,而我的想法也给炯炯大师很大的信心。后来也和国内外的存储厂家进行了交流很沟通。2014年通过前期测试和招标(华为、中兴、EMC、HP、HDS应标)最终确定采用华为FusionStorage分布式块存储。在2014年年底投入正式商用,2015年2月6日联合华为召开新闻发布会,是业界第一个投入商用的分布式块存储。在后来的使用中,和我预想的一样成功替代传统FCSAN高端存储,自从使用FusionStorage后,就没有新购或扩容FCSAN。

分布式存储的架构

一般来说,分布式存储不管是文件存储、对象存储还是块存储的基本架构都是大同小异的。即客户端或应用端、元数据(MDS)服务器和数据节点服务器。

客户端和元数据服务器之间交互是“信令交互”,而客户端到数据节点是“媒体交互”。元数据服务器或通过数据节点服务器获取各节点服务器的基本配置情况和状态信息。

比如,客户端需要读取某一个文件的信息,客户端会将相应的要求发给元数据服务器:“喂!我需要XXX,存在哪里了”,元数据服务器查询后回答“你到xxx服务器的xxx地址+xxx服务器的xxx地址取”。客户端拿到这个指示后,向这2台服务器发出指令,数据节点获得指令后,将相应的数据返回给客户端。

大家可能都会奇怪,为什么块存储、对象和文件的架构都是一样的。有什么区别呢?我们在前面基础知识讲述中,块存储是一种裸设备,它是将存储设备以“块”的方式直接提供给客户,由客户自己的操作系统里的文件系统进行管理。即分布式块存储里是没有文件系统的,是通过客户端直接将最简单明了的命令传递给存储的“块”来执行。而对象存储和文件存储虽然结构类似,但并不将存储底层的“块”直接提供出来,而是通过隐藏着一个文件系统,包装成为“文件”或“对象”提供出来。这些存储“不挑”操作系统或终端,最终执行命令的是存储里面的文件系统操控存储执行的,所以共享性很好。文件存储通过“目录+文件名+偏移量”来检索,文件间有目录层次的;而对象存储采用“唯一对象ID+偏移量”来检索,对象扁平存储的,是没有层次的。而且块、对象、文件存储是可以相互转换的,这个问题以后单独讲。

华为的FusionStorage是一个典型的“块”存储,我们来了解一下结构。

FusionStorage也分成了MDC、OSD和Client三部分。和其他分布式存储重大的差别是,MDC是记录、更新OSD服务器、磁盘等的状态,并把这些状态数据实时同步给Vbs,由Vbs计算出来数据所落的位置。MDC可以单独部署,也可以集中部署,也可以分布部署。如果MDC全出现故障,并不会影响存储的正常运行。但是如果在MDC故障期间OSD的状态发生了改变,比如某块磁盘故障,就会导致部分IO访问不正常。所以一般MDC部署在3台OSD上,确保安全。一般分布式存储的MDC采用的是数据库或内存储数据库来记录数据块和物理位置关系。客户端向MDC发出询问位置的请求,MDC查询数据库后返回请求数据的存储位置。这种方法存储访问的速度较慢,而且MDC作为交通的“枢纽”,绝对是整个存储的核心,当MDC发生故障,会导致整个存储都不能使用。但是采取这个方式,也有好处,比如可以根据不同需求设置不同的副本策略等。

大云网官方微信售电那点事儿

责任编辑:蒋桂云

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞