存储虚拟化技术其实不是一个新东西,在很早之前就有了存储虚拟化技术。技术发展到今天,在存储虚拟化技术之上又诞生了其余不少新的概念和技术。记得在2006年的时候,咱们实验室在作一个很是宏大的项目叫VSDS,这个项目就是一个典型的存储虚拟化项目。算法
在这个项目中,采用了大量的存储虚拟化技术。首先将磁盘进行虚拟化,经过池化的方式将全部磁盘存储资源进行管理,而后再将磁盘存储池中的资源分配给系统中的存储卷。造成存储卷资源的动态分配。这个概念在当时是很是前卫的,和LVM卷管理系统有着大相径庭的存储资源管理效果。在一个存储节点中会生成不少存储卷,多个存储节点中的存储卷资源在系统层级别再次造成一个分布式的存储池,该分布式存储池中的资源再动态分配给用户可见的逻辑卷。因此,VSDS本质上是一个分布式的集群SAN系统,在节点内部的卷级以及节点之间都采用了存储虚拟化技术。在当年这套系统所采用的技术是很是前沿的,即便在今天也是很是有价值的一套分布式SAN存储系统。分布式
存储虚拟化技术是你们常常说起的东西,到底在存储系统中,该技术会出如今哪些层面,而且会封装成什么用户特性?用户又从该类技术中如何受益呢?存储老吴给你们剖析一下,不到之处敬请指出。ide
从整个存储系统的层次结构上来,以下图所示,存储虚拟化技术一般分红以下三大类:布局
SAN虚拟化技术。这种技术咱们也能够称之为节点间的虚拟化技术。性能
卷级虚拟化技术。这类技术主要在卷管理层面上使用虚拟化技术。spa
底层虚拟化技术。主要在RAID数据保护层使用虚拟化技术orm
咱们首先谈谈底层虚拟化技术。底层虚拟化技术使用时间并非很长,也就在2012先后,不少存储厂商开始发布采用这种技术作成的数据保护系统,用来替代传统RAID,解决传统RAID在数据重构过程当中时间过长的问题。采用这种技术的厂商有NetApp的DDP系统、华为的RAID2.0等。将存储虚拟化技术引入到RAID系统中,最核心的一个想法是打破传统RAID数据布局上整齐划一的特性,从而能够破解数据重构过程当中读写性能的瓶颈点。blog
底层虚拟化技术在应用的过程当中,解决了RAID所面临的一些问题,但同时也引入了其余不少问题,例如,虚拟化过程当中资源分配是存在局限的,在同一个数据保护域内的数据不能被分配到相同的磁盘上。因为这个局限性,就会致使在存储资源不平衡前提下,即便存在存储资源都没法实现分配的状况。因此,当资源不平衡的时候,须要经过数据迁移的方式实现资源平衡。因此,底层虚拟化技术引入的数据迁移会致使应用性能降低。另外一个比较重要的问题是虚拟化技术致使磁盘抖动,从而当磁盘数量较少状况下,数据重构性能反而低于传统RAID的数据重构性能。传统RAID在数据重构的过程当中,若是没有应用IO的状况下,读写IO是彻底分离的,所以,全部盘都能运行在最高带宽模式下。引入底层虚拟化技术以后,在数据重构过程当中,全部盘上都存在读写操做,而且读写之间地址都是离散的,所以每块盘都运行在随机访问模式下,每块盘的性能都会变成原来的一半,甚至更低。因此,当磁盘数量不够多时,这种虚拟化技术所引入的损耗起了主导做用,整体性能低于传统RAID。下图引入底层虚拟化技术以后磁盘数据重构性能表现:ci
从上面的数据咱们能够看出,当磁盘数量达到必定时,采用底层虚拟化技术以后的数据重构性能会随着磁盘数量的增长而线性增长(DiskPool曲线)。而采用传统RAID,其数据重构性能和磁盘的数量是无关的。资源
整体而言,底层存储虚拟化技术改造了存储数据的分布,提高系统数据保护的能力。但同时该技术的应用也是有条件的,不是在任何状况下均可以使用的。在华为的存储系统中,该类技术被称之为RAID2.0,在OceanStore9000集群NAS系统、OceanStore18000系统中获得了应用。在国外厂商中,和该类技术相似有IBM GPFS中的Declustered RAID,HP 3PAR存储系统中的VRAID,NetApp盘阵中所采用的DDP技术都具备相似的结构。因为底层虚拟化技术核心点是资源分配器,因此虽然这些系统都具有相同的结构,都具备资源池化的能力和思想,可是,资源池中的资源分配器算法各家确定是不相同的,而这种资源分配器算法影响了数据在存储资源中的分布,影响到数据重构、应用性能和数据可靠性,是整个系统的核心所在。因此,当看到一个产品中提到采用存储池技术,就认为是RAID2.0,那是错误的想法。底层虚拟化技术在RAID中应用,已经将RAID技术向卷管理、文件系统方向发展了,RAID技术复杂度提高了。存储池不是该类技术的本质特征,只是外在表现,重要的是内部的资源分配器算法及策略。
(夜已深,今天写到这里吧,明天继续探讨存储虚拟化技术)