数据的流动、虚拟化的存储、存储的虚拟化、未来的存储(转)
[复制链接]
转自http://mp.weixin.qq.com/s?__biz= ... NTYzMw==&scene=6#rd
数据的流动 先说一个小故事,我常常和别人说数据中心是做什么的呢?数据中心只做三件事,1)数据传输;2)数据处理;3)数据存储。有一点点小小不同的是,这里的数据传输不仅仅是以太网传输IP数据,从CPU到各种适配器的传输,主机到主机间的传输,CPU到存储设备的传输,都是数据传输。如下图 上图中所有的红色线表示数据中心中数据流动和相关的协议以及相关设备。传统的计算模型中,写数据是很简单的过程,APP到OS到CPU到SAS HBA(或HBA)到块设备(硬盘、Storage、JBOD等)。 但是软件定义存储中,这个过程变复杂了,即使是一个简单的写数据过程,数据都要反复穿越上图中虚拟存储资源层。Guest OS 到虚拟存储资源到Virtualization 到CPU 到SAS HBA 到本地HDDSSD,与此同时,虚拟存储资源需要把数据写到另外一台物理主机的本地硬盘上,就有另外一个过程是,1)虚拟存储资源 ----> 2)Virtualization ----> 3)CPU ----> 4) NIC ----> 5)以太网交换机----> 6)主机2 的NIC ----> 7)主机2 的CPU ----> 8)主机2 的 Virtualization ----> 9)主机2 的虚拟存储资源 ----> 10)主机2的CPU ----> 11)主机2的SAS HBA ----> 12)主机2的HDD 。 数据经过12层传输,其中在2个虚拟存储资源层,和2个NIC层会消耗大量CPU运算。是不是傻?怎么解决这个问题,我先不说,我们跳跃一下,说一下存储虚拟化和虚拟化存储。读者肯定会说,这是什么鬼?调换一个顺序有什么好说的。大家再回到上图可以看到有一层叫做“虚拟存储资源”,其实大家都想做一块的工作,除了今天大家常常提到的VSAN、Nutanix、CEPH等,历史上还有那些相关的技术呢? 虚拟化的存储 除了我们今天比较熟悉的VSAN、Nutanix、CEPH,其实还有Veritas的Storage Foundation,见下图。其实这一个很有意义的产品,提出这个方案的产品经理一定是一个很有眼光的人,我猜测内部沟通和内部执行上肯定出了不少问题才导致这个产品悄无声息。 上面说的4个产品需要和OS或者虚拟化深度嵌入。而其它的一些SDS或者存储软件更多的是独立存在,目标对手是一些存储设备厂商。比如Nexenta NexentaStor ,Quantum StorNext,中科蓝鲸BWFS等,当然功能各有侧重,细节不在这里描述。 总结一句,所有的这些软件都是想办法把那些物理的存储资源通过各种方法整合再提供给上层(应用、虚拟机、物理机等) 存储的虚拟化 前面说到软件定义存储最大的意义在于,将底层的硬件资源抽象后再统一向上层应用(或虚拟机)提供存储空间。 存储设备厂商很早就在考虑到同样的事情了,但是他们擅长的不是操作系统或者虚拟化软件。而且客户都有自己现在正在使用的存储设备。存储厂商提出了一种存储虚拟化的方法。就是把现有的或者新购的存储硬件全部放到一个“更大的存储控制器”之后,由这个存储控制器整合所有存储的资源,再统一给服务器提供存储空间。所有的厂牌都想自己来提供这个“更大的存储控制器”。这个方案的最大2个缺陷是,1)谁也不愿意放在后面,大家都想把自己的方案放在中心;2)“更大的存储控制器”将成为一个更大的性能瓶颈(限于篇幅不再赘述)。 下面的图我们可以看到,IBM、EMC、HP、HDS都发布过这种产品,这个产品经理到底是有多傻?
IBM SVC (SAN Volume Controller)
EMC VPLEX
HP XP Unified storage devices
HDS Opinion
未来的存储方案
看完上面这些脑洞大开的方案,相信大家已经明白了其实存储虚拟化(VSAN,Nutanix等)和虚拟化存储最大的不同在于硬件资源的抽象在哪里完成。下面我画了下面图来解释他们各自的缺点(各自的优点大家可以自己百度)。 和存储相关的“虚拟化技术”怎么实现?什么厂商来实现,都是基于各自利益为基础的。所以“抽象表达”的位置各自不同,上图代表2大阵营,1)以VMware,Nutanix为代表的虚拟化平台软件厂商。2)以存储设备提供商为主,以EMC、HDS等公司为代表。到底有没有一种方案可以普遍适用呢? 虚拟化存储离不开OS和虚拟化软件,除了对性能的影响,对计算资源的占用,每一种操作系统或每个虚拟化平台都用自己的软件平台,结果就是不兼容、不兼容。OS平台升级带来的问题可能会非常复杂,平台软件被严格限定。 存储虚拟化呢?到底该用哪一家的方案呢?谁都想把自己的设备放在最中心的位置。这种控制器上再加控制器的方案有什么用呢?这个集中化性能没有提升,原来FC SAN的功能又被存储虚拟化给屏蔽了。比如EMC的VPLEX,但是下面的SAN用的是HP 3Par。那么原来3PAR的复制、压缩、等功能就在这个SAN方案中没有办法实现了。 到底怎么完成物理资源的抽象表达的工作呢?我认为需要满足以下几点: 1) 和OS或虚拟化软件无关,减少对OS的依赖和维护,目前市面的大部分作业系统和平台软件均可在该系统上运行,无需开发、配置等额外工作; 2) 和CPU类型无关,无论是X86的CPU或者是Power PC 或者是ARM; 3) 每个计算节点的添加,加电即完成平台软件加载,存储和计算是分离的; 4) 虚拟化的位置不应该是性能瓶颈,去集中化; 5) 从CPU出来到硬盘需要一个没有协议转换的,没有CPU参与的传输过程; 6) 节点和节点之间不应该有相互影响,任意一个节点的任何状态都不会影响其它节点的工作; 7) 需要有一个基于存储协议的无阻塞交换网络,类似于FC Switch; 8) 存储真正意义上的池化; 9) 整个存储池可以自学习,自维护; 10) 物理资源、虚拟资源可视化、可配置、可管理、可监控; 11) 充分发挥存储介质的性能,比如20台双路CPU节点可以实现并发IOPS达到1000万左右;12) 支持存储扩展功能,比如实时备份、快照、同异步复制、压缩、精简配置、多主机共享物理存储空间;
|