本文欢迎转载,转载请注明出处和作者。
存储虚拟化的概念也是一个发展的过程。
在实现了计算虚拟化与网络虚拟化的时期,存储其实还未完成彻底的虚拟化,但是由于计算与网络都已经被叫上虚拟化了,所以存储也不得不借虚拟化的概念热炒一波。
因此在当时,以IBM SVC为首的一批名为虚拟化存储网关(如EMC VPLEX、华为Oceanstor VIS 6000)的设备,承担了存储虚拟化的名头。
如前面文章所说,存储这东西非常讨厌,不像x86服务器,资源不够了,可以直接scaleout扩容,只要往计算的资源池里面加入新的x86服务器,然后做负载均衡/集群等方式,就可以把它们整合起来了。
而磁盘阵列的扩容受以下几个因素限制:
例如你的IBM DS5300磁盘阵列空间不够了,但是你的华为OceanStor 5300V3还有很多空余的磁盘空间/磁盘扩展柜,不好意思,你是不能将华为OceanStor 5300V3的磁盘空间/磁盘扩展柜加入到DS5300给它进行扩容的。因此一旦你选定买了一个品牌的存储,通常只能被品牌绑定,一直扩容购买该品牌的设备了。
例如IBM的DS系列(DS5000)与V系列(V7000),由于后者是收购回来的,所以管理平台与某些技术都不一样,无法统一使用。
每款磁盘阵列都会有控制器,而控制器的性能,决定了该款磁盘阵列最大可扩展硬盘数与最大可连接磁盘扩展柜数。因此单套存储的容量与性能,并不是可以无限扩展的,一旦到了瓶颈,就只能新购一套磁盘阵列。
存储不同服务器,是不能做集群来整合资源的,一旦新增1套存储,意味着在服务器层面看到的是一个新的卷,挂载到操作系统里面格式化的是另外一个逻辑硬盘。因此就需要在业务系统软件层面改代码,修改业务逻辑,考虑如何将不同的数据拆分到两块不同的区域(逻辑硬盘)里面存储,非常麻烦,改动非常大,风险非常高。
因此,一旦磁盘阵列达到最大的可扩容容量/最大的性能瓶颈后,一般都不会选择增加1套存储,然后修改业务代码,将数据拆分到2套设备上存储,而是选用新购一套更高端型号的存储,将上限往上提升,然后将数据整体迁移到新存储,修改代码往新存储上面读写数据。
上述操作,迁移数据需要很长的时间(视数据量而定),而且要停机进行切换,风险也非常高,而且虽然上限往上提升了,但是天花板依然是存在的,随着业务发展,一旦达到天花板了,有需要再次更换更高端的设备,无限往复轮回。
为解决上述3个问题,厂商们推出了存储虚拟化网关的产品。存储虚拟化网关是一台台独立的物理设备,但是需要购买容量许可,才能激活存储网关能够管理的存储上限容量。
存储虚拟化网关可以实现将不同品牌的存储资源整合,然后再通过软件将每一套存储的逻辑卷再次组成一个新的逻辑卷,然后再对服务器们提供服务。
在服务器层面,没有任何感知,与平常使用传统的磁盘阵列的逻辑卷是一样的使用方式,看到通过SVC逻辑化后的逻辑卷,挂载,格式化,然后使用,完全不用管到底资源是来自那一套存储的(实际上一个逻辑卷的资源,可能是跨了几套磁盘阵列的资源组成的)。
通过存储虚拟化网关,就能盘活现有的存储资源,将现网低、中、高端、跨系列、跨品牌的设备资源整合成一个存储资源池,然后对服务器提供服务。另外由于解决了扩品牌扩系列整合的问题,当单套容量/性能达到瓶颈,也可以通过新购新的磁盘阵列,加入到虚拟化存储资源池,达到不修改业务代码,扩容存储空间。
随着云计算的继续发展,终于出现了真正的存储虚拟化,就是后来出现的软件定义存储(SDS)。软件定义存储,广义上来说,只要是通过软件的方式来构建存储,而不是依赖于传统专用存储硬件(磁盘阵列)来提供存储服务,就是软件定义存储。
例如我们使用Windows Server自带的ISCSI存储功能,划出一部分硬盘空间构建一个虚拟ISCSI磁盘VHD,然后其他服务器通过ISCSI协议连接这块VHD磁盘,然后挂载与格式化文件系统使用。
又例如Linux使用openfiler直接将本地磁盘虚拟出一块ISCSI磁盘。这些都是通过软件的方式,将磁盘空间虚拟化为一个裸磁盘,对外提供存储服务,这些都是非分布式的软件定义存储。
而其他像Ceph,VSAN等通过分布式存储软件,部署在多台分散的x86服务器上面。而这些用来做分布式存储的服务器,通常单台设计成具备多块硬盘插槽,并且可以插入大容量的磁盘(如1TB~4TB)。分布式存储软件将多台x86的磁盘空间进行整合,并且对外提供统一的存储服务,这些是云计算时代的软件定义存储(分布式的软件定义存储)。
此外,软件定义存储与分布式存储,两者之间并没有必然的关系。如上所述,软件定义存储可能是分布式的,也可能是非分布式的。
而分布式存储,也不一定就是软件定义存储,除了分布式软件+x86服务器这种形式,像DELL EQL磁盘阵列,多套的磁盘阵列(如EQL6210E-24块SATA盘),每套有单独的控制柜+硬盘扩展柜,但是却能够通过统一的管理平台,将多套磁盘阵列加入统一的存储池,然后从存储池里面划分逻辑卷,逻辑卷实际的空间其实是横跨多套物理磁盘阵列的,从某种意义上,这种也算是分布式存储的一种。
随着软件定义存储的发展,像VMware的VSAN,能够在一般的分布式存储软件的基础上,为虚拟化环境添加更多的适配与功能。
VSAN能够通过软件做到策略驱动,能够通过对不同的逻辑卷设置不同的存储策略(例如设置多副本数量、IOPS上限限制等),只要部署在这个逻辑卷上的虚拟机,都会受到该存储策略的影响。而一旦虚拟机从这个逻辑卷迁移到另外的逻辑卷上,就会受另外的逻辑卷的存储策略管制,能够实现真正名副其实的“软件定义”存储。
随着软件定义存储的发展,存储(磁盘阵列)硬件逐步被x86服务器+软件替代。那么既然x86服务器又能做存储,有没有办法可以让同一台x86服务器同时把计算与存储的功能都做了呢?有,答案就是超融合。
传统的IT基础设施,都分为三层:网络、计算、存储。
而超融合的概念,就是将计算与存储节点进行融合,集群里的服务器,既配置cpu、内存做计算,也配置数块SSD磁盘做缓存,再配置大容量硬盘作为数据持久化存储,然后预留少量CPU+内存用来跑分布式存储软件,实现该服务器集群里面的机器,既能安装虚拟化软件,承担计算资源虚拟化的角色跑虚拟机,也能承担软件定义存储的角色划逻辑卷,给回计算虚拟化的服务器存放VM(虚拟机)。
软硬件一体的超融合领导者品牌有Nutanix、DELL EMC的VXRail(软件定义存储层面使用的VMware的VSAN)、HPE的SimpliVity、CISCO的HyperFlex等。
而在也有一些可以单纯购买超融合软件,自行部署在厂商兼容性列表里面的自购硬件中的品牌,例如smartx、maxta等。
关于超融合,后面会另起文章进行阐述。超融合概念的兴起与产品的推出,反向又促进了软件定义存储的市场推广。