2016.12.08
超融合在2015年关注度非常高,但各家厂商的超融合架构实现方法各有不同。我们不评判对错,也不去探究这些是不是真正的超融合,而是重新追本溯源,思考为什么超融合现在被关注,什么样的it架构更“合适”于当今的商业。
传统集中存储落后于现代企业数据中心发展
全球的it数据每年在以40%的速度增加中。数据正在逐步影响商业,企业通过数据的分析来做决策与管理。完成快速的分析决策和管理,就需要借助强大的数据中心。下图为传统san存储:
但是,光靠越来越快、核数越来越多的cpu是不够的,瓶颈在于传统存储的硬盘太慢了,cpu大部分计算能力都空闲或者说在等待存储数据传输过来。传统存储容量和性能不具备和”计算能力“匹配的可扩展性,不能满足企业进行数据访问的需求。
这个问题并不是现在才有,google很早遇到这个问题。那么google是如何做的呢?
作为一个给全世界互联网网民提供数据检索的企业,google考虑过emc、ibm,还有当年的sun存储产品,但是都解决不了它的问题。无论是容量还是性能,这些公司的产品都无法满足google的规模需求。于是google只能自己建立一个适合自己的数据搜索的存储结构了。
google优秀的计算机科学家们,打破了传统的存储思维,利用服务器的本地硬盘和软件构建了一个容量和性能不断可扩展的分布式文件系统,并在其上构建了其搜索和分析的计算引擎:不用把数据从存储端取出来,然后通过网络传输到计算端,而是将计算直接分发到存储上运行,将“计算”作为传输单元进行传输,这样大量的存储数据都是本地访问,不需要再跨网络上传输了,自然访问很快。于是乎,自然而然地,“计算”和“存储”运行(“融合”)在了一个服务器上,这里我们也看到超融合架构的一个优势就是,本地访问数据,不必跨网络。
现代企业的数据量越来越大,应用越来越多,他们开始面临当年google遇到的问题,cio要考虑怎么更高效的构建自己的计算和存储的基础架构,来满足应用的数据访问需求。
虚拟化为更容易的管理应用而生,它解决了cpu、内存资源闲置的问题。但随着虚拟化的大规模应用,虚拟机越来越多,虚拟机在传统存储上运行却越来越慢了。“慢”造成“体验差”,“体验差”成为了限制虚拟化应用的最大的瓶颈。这里面的最重要原因自然是,存储的i/o性能不够,大量的虚拟机和容器同时运行,i/o的混合,使得随机读写急剧增加,传统存储的结构无法承受大量的随机i/o。
超融合恰恰是为了解决这个问题,才被带到了虚拟化和容器领域。同时,业内也存在不同的解决i/o问题的方法,我们先尝试分析下其他的解决方法:
解决方法一:在存储设备采用ssd做cache,加速i/o。这在一定的规模下可能有效,但是存储设备的ssd cache通常比例较小,不足5%的容量比的情况下,自然满足不了用户的热数据的缓存需求。另外,仍然无法随需扩展,所有的数据仍然要从集中的存储控制器流出,这个集中的“收费站”势必堵塞“高速公路”。
解决方法二: 使用服务器侧ssd做cache,加速i/o。这种类似的世界杯正规买球平台的解决方案,通常缺乏高可靠性软件的支撑,服务器端的cache如果用做写cache,存在单点失效的问题,需要在多个服务器的cache设备上,做副本来提供可靠性,可以说这是一个阉割版的超融合架构,将cache放到服务器端,仍然使用传统存储,当cache满,需要被写回传统存储的时候,仍然被传统存储的“控制器”限制整体性能。
我们看到,上面的两种方案都是受限于传统存储的结构,超融合存储则不一样,通过完全去掉传统存储,利用分布式文件系统来提供“不可限量”的性能和容量,在这个基础上,再通过cache进行加速,甚至全部使用闪存(全闪存产品)来构建都是自然而然,不被限制了。
因此,超融合架构不是为了让单台服务器的存储飞快,而是为了让每增加一台服务器,存储的性能就有线性的提升,这样的存储结构才不限制企业业务的运行,并保证业务的可靠性。
i/o性能瓶颈问题转移到了存储
如果内存的访问速度相对cpu太慢,那么磁盘的i/o访问速度相对cpu来说就是“不能忍”了。下表是不同存储介质的访问延时,在虚拟化环境下或云环境下,由于i/o基本都是随机i/o,每次访问都需要近10ms的寻道延时,使得cpu基本处于“等待数据”的状态,这使得核心业务系统运转效率和核心应用的用户体验都变得很差,直观的感受就是业务系统和桌面应用“很卡”。
基于ssd构建平衡系统
和前人解决内存访问延时问题的思路类似,现在的主流方法是使用内存和ssd作为cache来解决i/o性能瓶颈。存储系统能够分析出数据块的冷热程度,将经常访问的数据块缓存到内存和ssd中,从而加速访问。
不论是全闪存存储,还是混合介质存储,从某种意义上讲都是层次存储,只不过混合阵列多了一层磁盘介质。学过计算机体系结构的人都听说过著名的amdahl定律,这里我们要介绍一个amdahl提出的“不那么著名”的经验法则:“在一个平衡的并行计算环境中,每1ghz的计算能力需要1gbps的i/o速度与之匹配”。
假设一台服务器有2颗e5-4669 v3的cpu,每颗cpu有18个核,36个超线程,主频是2.1ghz,那么我们可以计算一下,这样的一台服务器需要151gbps (即~19gbps)的带宽。在大规模的云计算(虚拟机算)环境中,极端情况下,大量的i/o并发使得存储收到的i/o都变成随机i/o,在这么一个并发环境中,假设我们的访问大部分都是8kb的读写,根据上面的计算,我们需要为一台服务器配备近250万的iops读取速度。
在不考虑系统总线的情况下,如果我们用sas/sata硬盘来提供这个iops,即使每个sas/sata盘可以提供近250的iops(实际数值更小),仅为构建一台平衡的服务器计算存储环境,就需要大概1万个sas/sata硬盘。在稍大规模的虚拟化环境,想要搭出一个平衡的系统,用传统的sas/sata硬盘几乎不可能完成任务。但是如果采用能够提供10万“写iops”的ssd设备,25块ssd就够了。
层次存储的优势
“层次存储”是相对“全闪存”而言,是指将容量大但是速度较慢的hdd和速度快的ssd同时构建在系统中,通过数据的访问特性,将经常访问的热数据放置在ssd中,而冷数据放置在hdd中。
首先,为构建一个平衡的虚拟化环境,需要大量的ssd设备来提供足够的iops。但是ssd也不是完美的。目前的ssd擦写次数有限、价格高。层次存储将热数据放置在ssd层中,而大量的冷数据仍然放置在sata硬盘上,热数据周期性的同步到hdd硬盘,既为用户热数据提供了高iops的保障,也通过sata硬盘提供了更大的容量和可靠性。
下图是对11个开发人员桌面负载的i/o统计,包含了对5.1tb大小的存储上的76亿次io访问和28tb的数据传输。首先值得注意的是,有3.1tb(62%)的数据,在一年内从来没有被访问过,这意味着这些数据无论是放置在ssd上,还是sata上,甚至放到u盘上拔走,对系统都没有影响。