为什么叫浅谈呢,因为就是自己的观点,受知识所限难免偏颇。数据中心里面真正的东西总结起来就是三大部件:计算、存储和网络。这三大部件的演变过程是:硬件—虚拟化—融合。
在传统独立硬件时代,计算资源就是服务器,存储也是独立的硬件设备,因为服务器和存储之间的相互连接就构成了网络。不管是TCP/IP还是FC,这些构成服务器和存储之间连接的网络部分,随着服务器硬件的升级和存储的硬件的升级而成为瓶颈。为什么不把碍事的连接网络去掉,将最强的直接融合在一起,即服务器和存储硬件融合在一起,并且实现扁平化。在超融合时代,数据中心将实现扁平化,用软件定义的方式,使用标准x86服务器实现数据中心基础架构的扁平化。所谓超融合,从形式上对数据中心进行了重新定义,而不是存储。但是现在所谓的超融合,虽然强调的是将数据中心的计算、存储和网络融合在一起,但是在我看来也就融合了计算和存储部分。
这个领域当然最著名的是Nutanix,于2011 年推计算和存储一体机NX 家族,硬件平台是Supermicro的2U密度优化型服务器,支持1-4个双路英特尔至强节点。软件上,Nutanix采用Google著名的MapReduce分布式计算框架,配以类似GFS的NDFS(Nutanix Distributed FileSystem,Nutanix 分布式文件系统)实现的计算和存储的分布式集群。
但是在网络部分,其需要配置一台万兆交换机互联各个节点。包括在其本身一台2U服务器内的多个节点之间的互联。你在逗我吗?这样也敢网络融合。没有看见所谓超融合在硬件方面有哪些牛逼的融合改进,只看见将其进行模块化定制在标准x86服务器内安插不同类型的承载计算资源的主板,外加标准x86服务器本地本身可自带的服务器盘位。扁平化了是没错,分布式了扩展牛逼也没错。但是不好意思的是,网络部分还没融合进去。
所有这样来说,所谓超融合和刀片服务器的区别在于,刀片服务器以及将计算资源和网络进行了融合,超融合是计算资源和存储系统的融合。
现阶段的超融合系统就是一个概念,利用现有的技术堆叠起来的一个技术堆栈。计算部分采用分布式框架和虚拟化架构,存储采用分布式文件系统,硬件采用万兆网卡加SSD堆IO。这种架构现目前也就只能适应分布式的应用,比如虚拟桌面。真正的高并发高吞吐的IO的应用还不太适应,比如OLTP应用,我认为还需要进行硬件优化和软件系统的优化,随着技术的进步,超融合才有可能取代现有的传统存储。而且这个阶段的超融合概念意味明显。只有真正的将网络也融合进入标准的服务器内部并实现扁平化,这样才是真正的将计算、存储和网络融合在一起,才是真正的超融合。现目前国内的超融合系统,大部分厂家都是基于基于OpenStcak或VMware和CEPH深度优化的,自己写代码实现的很少,更别说硬件的更加深度融合和定制。
在这里我们做个假设,如果需要将网路融合了进入x86的主板内,是在主板上集成网卡然后在内部集成互联的小交换机吗?借鉴刀片服务器的做法?我认为最好的办法就是采用InfiniBand技术在内部进行互联,在InfiniBand的技术构想中,InfiniBand直接集成到系统板内,并且直接和CPU以及内存子系统互动。InfiniBand是一个统一的互联结构,既可以处理存储I/O、网络I/O,也能够处理进程间通信(IPC)。同时个节点之间采用PCIE闪存卡作为FlashCache。利用InfiniBand还可以利用它的技术特性,比如RDMA(Remote DirectMemory Access)远程内存访问,Infiniband发展的初衷是把服务器中的总线给网络化。为什么要网络化?我们知道,计算机中是总线是共享的,而且总线的吞吐能力是由总线时钟决定的(比如33.3MHz,66.6MHz以及133.3MHz)和总线的宽度(比如32位或者64位)决定的。所以Infiniband除了具有很强的网络性能以外还直接继承了总线的高带宽和低时延。大家熟知的在总线技术中采用的DMA(DirectMemory Access)技术在Infiniband中以RDMA(RemoteDirect Memory Access)的形式得到了继承。这也使Infiniband在与CPU、内存及存储设备的交流方面天然地优于万兆以太网以及FibreChannel。可以想象在用Infiniband构筑的服务器和存储器网络中任意一个服务器上的CPU可以轻松地通过RDMA去高速搬动其他服务器中的内存或存储器中的数据块,而这是FibreChannel和万兆以太网所不可能做到的。而且利用RDMA我们可以构建一个以所有服务器内存为基础的统一的高级缓存架构,次一级的PCIE闪存卡作为FlashCache的统一的一个更优于本地SSD缓存的架构。这样的架构下,内存为最高优先级的以及缓存、PCIE Flash为二级缓存,本地的SSD为三级缓存。形成一个统一的分层的高速缓存池。这个缓存池可以卸载、重排、优化网络IO和存储IO。同时网络硬件的融合还需要软件的驱动,在软件部分还需要真正的融合SDN,真正实现不只是软件定义计算、软件定义存储,还需要软件定义网络,这样就实现了真正的超融合。