在存储领域,最近一段时间出了太多的新概念,其中包括“软件定义存储”、“Server SAN”以及“云存储”等。很多概念把大家弄的云里雾里,不知所云。那到底什么是软件定义存储?什么是Server SAN?什么是云存储?其实很多存储厂商都没有很好的定义,行业也没有一致的清晰定义。市场、媒体给出的很多都是宏观的解释。在这样一个概念满天飞的年代,不仅用户感觉到困惑,而且技术人员同样会看不清楚未来的技术方向。下面来专门谈一谈软件定义存储,看清楚软件定义存储的真实面目
在计算机发展到今天,软件定义已经不是什么新鲜事物,“software define everything”已经成了一句口头禅。提起软件定义xxx,我很早就接触了软件定义仪器,并且在这个领域做了很长时间的工作。软件定义仪器的本质是用计算机来进行数据处理,完成仪器的核心功能。传统仪器通常采用专用硬件的方式完成核心功能,因此,在研制一台仪器的时候,重点在于研制这些专用硬件。然后将这些专用硬件拼装成一台仪器设备,配上特定的软件,最后形成一台仪器。而软件定义仪器的思想已经将仪器设备切分成通用模块和计算机两大部分。通用模块主要有各类数据采集模块、信号发生模块、电源模块、驱动模块等。这些模块是通用的,并且可以通过PXI等仪器总线互连在一起,形成一套硬件设备。在这些通用模块的基础上,核心的数据处理算法完全运行在计算机上,以及板载的FPGA上。对于仪器设备,硬件模块是通用的,不同的仪器具有不同的软件,这就是软件定义仪器,也被俗称为虚拟仪器。从此我们可以看出,软件定义仪器基于通用的硬件模块,不同的软件功能则实现了不同的仪器设备。美国的NI(国家仪器)一直在推动软件定义仪器。但是,在很多人眼里,这种软件定义仪器往往演变成了计算机仪器,以为在一台仪器设备中有了计算机之后,这个仪器设备就成了软件定义仪器。在没有理解软件定义仪器核心思想的时候,往往会感慨“虚拟仪器”真的好“虚”。其实,软件定义仪器的思想是测试测量行业的一大进步,其强调了信号处理在仪器领域的重要地位,并且将硬件抽象成了几类通用模块。传统只能通过硬件来提高精度的办法,如今可以采用强大的数字信号处理的方法的来实现。并且在通用硬件的基础上很快的构建仪器系统,这就是软件定义仪器的优势。
软件定义存储的思路和软件定义仪器非常的相似,软件定义存储强调的是在通用服务器平台上通过不同的软件构建不同的存储设备。这里的一个关键字是通用服务器。在传统存储设备中,存储厂商会自己研制存储硬件,由于磁盘的IO性能很低,因此,存储厂商需要自己研制面向IO的存储硬件。比如说在一台存储服务器中需要扩展很多的SATA/SAS接口、扩展硬件RAID功能;如果是高性能的存储设备,还需要扩展控制器之间的专用互连网络接口;由于存储是IO密集型应用,因此,低端存储甚至可以采用计算性能比较差的CPU进行设计;存储是追求高可靠性的一种应用,因此,传统存储往往追求硬件设计的可靠与稳定,通过提高硬件的可靠性来达到存储可靠的目的。在这种传统存储的思路下,存储的设计主要分成存储硬件和存储软件设计两大部分。即使存储硬件和通用服务器很像,也需要进行特殊定制。
软件定义存储的思想就是要将定制硬件的过程从存储设计中彻底抛弃,存储就是在通用服务器上的一套软件,这就是软件定义存储这个概念背后的含义。从技术的角度来看,在通用服务器上完成存储功能,是否和传统存储设计方法是相同的呢?为什么在几年前软件定义存储不能横空出世呢?而为什么直到今天才可以大力推行软件定义存储呢?
想要回答这个问题,其实不难。主要原因在于通用服务器性能的发展、网络技术的发展以及存储介质本身的发展和进步促进了软件定义存储的落地。今天一个普通的服务器就可以安装1TB左右的内存;2路CPU;至少10多个PCIe3 Lane;在网络方面基本都会板载两个10Gbps以太网,8G/16Gbps FC卡也非常的主流;在IO方面,闪存无论在性能还是在容量方面都取得了长足的进步。如果通用服务器、网络、IO无法达到今天这种水平的话,软件定义存储是很难实施的。试想,几年前,如果我们想要达到1万IOPS的性能,我们只能通过并发磁盘的方式达到这种目标,为了能使更多的磁盘并发,我们需要大量的SAS/SATA接口,因此,只能定制主板来满足这种设计。而如今,一块SSD盘就可以达成这个目标。因此,软件定义存储是有其技术基础来支撑的,计算机水平发展到今天,软件定义存储可以落地开花了。
从技术角度来看,和传统存储相比,软件定义存储中的“软件”有什么不同呢?传统存储中的硬件承担了一部分系统可靠性的作用,基于通用服务器的存储没有专用硬件的护航,势必需要软件具有更强的容错性。因此,在软件定义存储实施的过程中,设计者将运行的硬件平台假设成不稳定、不可靠的。在这些不稳定、不可靠的硬件平台上完成可靠数据存储,提供可靠数据服务,那么整个系统的架构需要发生重大变化。因此,软件定义存储往往采用分布式的架构,通过分布式的方式提高整个系统的容错性,通过分布式的方式,将通用硬件引入的不稳定因素降到最低。最近我们看到很多传统存储厂商纷纷推出了自己的软件定义存储解决方案,这些方案本质上都是将他们的软件单独打包进行销售,直接运行到通用服务器平台上,冠名“软件定义存储”。这些软件和传统存储中的软件没有本质上的区别,但是,要知道当初这些软件在设计的时候,都有“专用硬件/平台”的假设。一旦脱离这种专用硬件,整个系统的可靠性如何进行有效保证呢?所以,这些匆匆上马的“软件定义存储”并不是这个领域的最佳产品,是一种偷梁换柱的方法。这个和当年将磁盘替换成SSD之后,就宣称自己是全闪存阵列是一回事。总的来说,一个真正的软件定义存储产品,需要面向通用服务器的特征进行设计,通常采用分布式架构,并且综合闪存、磁盘进行分层存储,通过软件的方式不仅获得最佳的性能、最大的容量,而且达成最低廉的价格。
从市场角度来看软件定义存储,这是一种巨大创新。传统存储提供专用设备,最多和大型服务器厂商打配合,整合存储和服务器,共同推动IT系统解决方案。一些不入流的服务器厂商以及大量的OEM厂商根本就进入不了存储这个领域,没有机会与存储厂商进行互惠互利的合作。伴随着数据时代的来临,这些厂商都在寻求一条道路能够切入存储市场,软件定义存储就提供了这样一种机会。软件定义存储的特征是在通用服务器的平台上构建存储,那么无论是大型服务器厂商,还是OEM厂商都有机会将自己的设备集成到存储系统中去。这无疑给大量的硬件设备商打了一针鸡血,因此,从这个角度来讲,软件定义存储不火才怪呢。软件定义存储整合了服务器厂商、网络厂商、存储软件厂商,共同打造了一个存储生态圈。所以,这是一种产品、商业模式上的巨大创新。
从用户角度来看软件定义存储,的确节省了真金白银,获得了实惠。软件定义存储采用了通用的服务器平台,通用的平台在价格上会低于专用平台。无论是在可维护性方面还是在产品的可选择面上都有更大的灵活性和空间,自然而然会降低整个存储系统的成本,从而让客户获利。
有此可以看出,软件定义存储不是一个概念,也不是飘在空中的一朵云,而是一个实实在在正在落地开花的一种创新性产品。无论是从技术、产品、市场还是用户的角度来看,软件定义存储都是巨大的创新。但是,真正的想把软件定义存储做好,也并不是那么简单的事情,在技术上和传统存储软件存在较大的差异,需要更加强调系统的容错性。而并不是简单的把传统存储中的软件单独打包销售。我相信软件定义存储是未来发展的方向,更加期待专业化的软件定义存储厂商诞生,推动国内存储行业的发展。