Please enable JS

虚拟化场景下如何正确选择分布式存储

/2017-3-18 14:45:29

在虚拟化场景下,使用分布式存储无疑是一个非常正确的选择。一台物理机运行几十个虚拟机,或是几台服务器的虚拟机集群(云计算平台)同时跑几百个的虚拟机,其中的每个虚拟机在访问的磁盘地址时的跳跃会很大,对并发随机IO的要求也会很高,而这正好是分布式存储的天然优势所在。

另外,虚拟化集群往往随着业务的逐渐增多而需不断扩展,这就要求存储系统也能不断的扩展以匹配业务膨胀的需求,并且性能还要随容量的增加而不断提升。传统SAN虽说也能扩展,但性能易受控制器能力局限,不能完全做到线性的扩展。另外,扩展的磁盘只能建立新的磁盘组,数据在新旧磁盘之间还需人工介入才能实现数据均衡。而分布式存储支持容量扩展同时性能同步提升,支持扩容时数据自动均衡,能很好地解决扩展性问题。

1.png

除此之外,分布式存储还能更好的与虚拟化平台融合,并以此获得同传统虚拟化平台方案更低得硬件采购成本,更低得机房占用率,以及更方便的管理和维护能力。

分布式存储优势很多,该怎样结合优势挑选最适合的分布式存储呢?不妨从如下几个方面考虑:

1、分布式文件系统VS分布式块存储

客观上讲, 每个虚拟机的磁盘对应存储的一个LUN 是最理想的部署方式。但是,由于传统的SAN(块存储)对LUN的个数有限制(比如 255个),加之其管理系统接口都是私有的,导致每次创建新的虚拟机都需要手工划LUN。在虚拟机规模很多的情况下,这种方式显然是不现实的,所以一般会划一个大LUN,然后在此之上创建文件系统,用来同时分配和管理存储空间。有鉴于此,出现一些存储产品,使用NAS作为虚拟磁盘的存储系统,也有直接拿分布式文件系统来做虚拟磁盘的存储系统的。

分布式存储设计之初就考虑了卷个数的问题,其卷数量都非常大,足够满足云计算平台每个虚拟机对应单独一个卷的要求。而虚拟化管理平台也已经开始统一存储管理接口,比如OpenStack Cinder / VMWare VVOL,分布式存储只要兼容该接口,就可以做到自动创建和删除LUN。所以让每一个虚拟磁盘对应一个LUN,对于分布式存储系统来说是可以技术实现的。

从性能上考虑,虚拟机所使用的虚拟磁盘本身是块接口,如果中间还存在一层文件系统,需要进行块接口与文件系统接口直接的转换。这中间增加了文件系统元数据管理开销、协议转换开销、以及文件系统的分布锁开销。而直接使用分布式块存储,虚拟机的块接口请求可直接透传给存储系统,完全没有中间转换的开销,效率会高很多。这一行业趋势已经日趋明显,比如,VMWare VSAN/VMWare VVOL/OpenStack Cinder都是块设备与虚拟机直接对接,虚拟磁盘直接对应一个LUN/卷。因此,分布式块存储的性能会更好。

从可靠性上考虑, 分布式文件系统将所有虚拟机的磁盘放在一个文件系统上, 一旦文件系统的公共元数据损坏,可能导致所有虚拟磁盘损坏或者丢失。而分布块存储可以让每个虚拟磁盘对应一个LUN,每个LUN的元数据是独立的,相互可以做到互不影响, 某个LUN损坏, 也不会影响到其它虚拟机的数据。因此,分布式块存储的可靠性更高。

最后,从扩展性角度考虑, 分布式文件系统一定会有公共的文件系统元数据的管理,涉及到多节点的服务器访问加锁,会制约集群的扩展性规模,一般分布式文件系统都是在几十台规模,而分布式块存储杜绝了管理虚拟机磁盘文件的元数据,规模轻松可以达到上千台规模。因此,分布式块存储的扩展性更优秀。

2、支持虚拟化优化特性很关键

存储性能测试时, IOPS和MBPS是两个关注的重点。但对于虚拟化平台的存储,是否能很好的支持虚拟化加速特性,也是非常关键。比如:VMWare的VAAI和Hyper-V 2012 Server的Offload Data Transfer-ODX。

VMWare VAAI包含Full copy,Zeroed,ATS,Thin Provisioning Stun几个子功能,这些特性对克隆、虚拟机内部IO性能提升都有很大作用。

比如Full Copy是指存储支持COPY Offload,在存储系统内部进行数据块的拷贝。VMware 利用该特性加速克隆性能,实际测试过程发现,如果存储系统不支持该特性,克隆一个虚拟机可能要20分钟,可是支持这个特性的存储完成同样的任务只需要2-3分钟。

再比如ATS锁特性,可以避免对针对整个存储卷的加锁。如果存储卷加锁,会导致阻塞所有的IO操作,特别当集群规模较大的时候,这个影响会变得非常明显。

Hyper-v ODX特性功能同 VAAI 的COPY Offload类似,但功能更加强大,就不再累述。

2.jpg

3、除了性能,更需要关注异常时的性能稳定性

在测试传统存储时,往往只关注正常状态下的IO性能。但对于分布式存储来说,恢复时的自动重建和自动均衡表现也十分重要。很多分布式存储在正常状态时性能都还不错,但一旦发生重建、扩容均衡时,性能就会下降到无法忍受的地步,对虚拟机内部的性能造成的影响也无法估量。所以在选择分布存储时,除了业务性能指标外,还应该多关注这些异常状态下的性能稳定性方面的问题。

4、专一才是最好

现在有很多分布式存储系统,宣称同时支持块存储、对象和文件系统。如果只是为虚拟机提供存储,建议选择只支持块存储的产品即可。为什么呢?因为,一个产品里面,特别是核心引擎支持的东西越多,各种优化的复杂度就会越高,稳定性、可靠性受到的影响就会越大。好比单针对块存储进行优化,每个数据切片可以采用定长来切;可以简化对象名,简化后,可以尽量大部分甚至全部缓存内容,减少元数据读盘。但还要考虑对象、文件系统的话,考虑优化问题就不能像这般简单,还需评估对块的优化是否会对文件系统、对象造成潜在的影响,是否会引入一些不可知的风险等。再比如,块存储基本采用强一致性,对象存储基本采用最终一致性,放到一起两者要如何取舍?全用强一致性,对于对象存储来说,会牺牲性能;而全用最终一致性,块存储数据可靠性又存在问题。

如果有客户确实需要存储对象和块,还是建议各买一套的好。强行放到一个集群当中的话,选择好的硬件对于对象是浪费,选择差的又不满足块存储要求,总有一方要为对方做出牺牲。所以,还不如将块和对象分开,让其各自发挥自己的优势为好,这样综合下来可能比放到一起会更划算。

限于篇幅,这次的分享先告结于此,如果有对虚拟化场景下如何选择分布式存储想了解更多的看官,还请关注杉岩数据的官方微信和网站,以获取更多资讯。也欢迎来电来函提出您的需求和建议,我们会第一时间给予反馈。