存储虚拟化:分析师的看法

本文作者Henry Newman是企业存储论坛的常驻作者。他是一位资深行业咨询师,在高性能计算和存储领域拥有28年经验。 

我从来都不是存储硬件虚拟化的拥护者。存储虚拟化经常意味着将基于块的虚拟化。服务器虚拟化目前已经有Citrix(纳斯达克代码:CTXS)的XenServer和VMware(纽约股票交易所代码:VMW)的VMware等软件。存储虚拟化是和服务器虚拟化完全不同的概念,它有着不同的问题和挑战。

首先,让我来描述一下我在这里对存储虚拟化的定义。存储虚拟化在业内有许多不同的定义,我知道有一些业内人士还认为一个文件系统就是虚拟化,因为他们只想到了将数据写到块里面去。对我来说,虚拟化意味着块的数量和它们的位置被文件系统以外的系统所控制和管理。文件系统基本上能看到LUN(逻辑单元号)和块的地址集,但是这些地址有可能是被其他系统所控制的。这种系统有可能是一个单独的设备(存储,带外或带内设备)或软件(有许多软件可以虚拟化存储,比如分层存储管理或LUN虚拟化)。

在我开始讨论存储虚拟化的问题之前,我先声明存储虚拟化可以在许多环境中为用户带来好处并帮助用户削减成本。这些环境基本上对性能的要求比较低,而且经常是可以容忍高延迟性的应用程序。例如,如果你在虚拟化一个网络应用程序的同时将系统到存储的延迟时间提高了20毫秒,并将带宽减少了20%,那么只要系统存储与互联网上的系统用户之间的带宽和延迟性保持不便,那么该应用程序在网上的运行将不会受到很大影响。

从另一个方面来说,如果你在一个本地的高速低延迟网络上进行存储虚拟化,那么延迟时间的增加以及性能的下降都将给用户带来严重的影响。如果你把这两个例子之间的不同看成SAN(低延迟和高性能)与NAS(高延迟与低性能)环境下的区别,那么你就对了——存储虚拟化与性能之间会有一定冲突。

对于大型存储环境虚拟化,我主要关心两个方面:

性能

如果你没有性能上的要求,那么虚拟化可以让你的生活在一段时间内变得更加方便。这段时间的长短取决于你所选择的虚拟化厂商,以及你计划在多长时间内采用该厂商的产品和服务。虚拟化可以在某种程度上使你的生活更加方便。

故障判断与排除性能

虚拟化的要旨就是让管理者能够随需配置存储。这经常意味着需要让文件系统能够根据存储空间的可用容量来伸缩,并且让管理者能够从LUN池中配置存储,即使管理者根本不知道这些LUN的所在位置以及它们的大小。

就像我以前曾经说过的那样,应用程序和存储设备之间缺乏足够的通信。应用程序无法告诉存储说它需要哪种性能,管理人员也不能说这个用户有这样的性能要求,然后要求该用户和该应用程序的存储请求在存储控制器的队列中得到更高的优先级。有一些厂商声称它们可以为性能排列优先顺序,不过这种性能优先级排序只有在同质的环境下才能进行。目前这种性能优先级排序还没有统一的标准,而且这种性能配置的概念也不是SCSI(小型计算机系统接口)标准的一部分。

在我们现在的系统中,LUN是固定的,存储控制器上发出指令会将一个LUN配置给一台服务器,然后它被文件系统所使用。LUN的位置是已知的,存储系统中其他LUN的位置也是已知的,而且如果你发现有性能问题,你还可以在比较短的时间内跟踪这个问题,因为你知道你的LUN在哪里,你还知道这个存储控制器——甚至同一个磁盘驱动器(因为一个独立磁盘冗余阵列组可以被分成多个LUN)——还被哪些程序所使用。无论是哪种情况,如果你的系统发生了故障,对LUN的位置以及影响LUN的其他因素的了解都能够帮助你解决问题。

继续上面的例子,但是换成虚拟LUN。你将需要知道LUN的位置,以及LUN受到哪些因素的影响。在一些虚拟化系统中,LUN将根据存储的使用情况来重新设定,因此LUN的大小可能会经常移动,而根据存储使用情况和其他系统的需求,干扰因素也是随机的。如果没有真正好的工具来提供历史信息和实时信息,你将无法知道问题在哪里。

迁移

如今,任何一种存储迁移都是复杂的工作。有许多厂商声称它们的产品可以简化环境之间的存储迁移。对于许多简单的环境来说,存储迁移是比较简单的,但是即使这样它的成本也不便宜。如果你使用虚拟环境,你在文件系统、存储以及存储块的真正位置之间便存在着更加复杂的间接关系。如果你在新的虚拟化环境下将你的旧环境迁移到新环境,那么硬件和软件的迁移必须协调一致才能保证迁移的顺利进行。

我在一些客户那里看到了他们所遇到的迁移问题。迁移过程并不总是像某些厂商们所宣称的那样顺利。除了迁移过程外,如果你替换现有的未被虚拟化的硬件,你还必须考虑迁移的时间。虚拟化确实没有统一的标准,而厂商们可以按照自己的想法来实施虚拟化,只要它们支持T10(SCSI)和T13(SATA:串行ATA)命令就可以。如果用户从一个厂商的系统切换到另一个厂商的系统,那么可能就会遇到大问题。

存储虚拟化的作用

虽然我在上面谈到了我对虚拟化的诸多担心,不过只要每个人理解短期影响(监视性能和性能分析会受到一定影响)和长期影响(迁移到硬件需要更加仔细的规划,而且过程也可能不会很顺利),那么存储虚拟化在一些环境中还是有用武之地的。

展望未来,我认为基于块的虚拟化策略有可能将被新的技术所取代,比如ANSI(美国国家标准学会)T10基于对象存储设备(OSD)或NFSv4.1(pNFS:并行网络文件系统),这些技术可以让文件系统管理存储虚拟化。如果基于块的虚拟化系统遇到T10对象存储的话,将会发生什么?我猜想虚拟系统可能将无法工作,因为对象存储的SCSI命令的集合包含了目前的SCSI命令。

我仍然还是比较怀疑基于块的存储虚拟化策略是否能够满足高性能环境的要求并节省用户的成本。作为一名咨询师,我喜欢有意思的工作,即那种促使我变成像存储侦探那样人物的工作,例如,为什么数据库搜索变得很慢,而在我的兴趣列表中,我对于寻找索引文件在虚拟存储环境中的真正位置并不是很感兴趣。

寻找数据移动地点以及如何移动数据才能提高性能,这种工作是非常枯燥而且需要时间的。另一方面,低性能环境可以从虚拟化所赋予的伸缩性中获益,而且由于这些环境通常并不复杂,因此在虚拟环境中升级硬件也有一定优势。我的疑问是是否有更好的方法来解决基于块的虚拟化策略目前所试图解决的问题。我认为在许多情况下,其他解决方案会比购买基于块虚拟化系统更加方便和节省成本。