首页  ·  知识 ·  基础设施
自动精简配置技术深入解析
网友     数据中心  编辑:dezai   图片来源:网络
按理说,没有人愿意为自己不曾使用的东西付钱,但在过去相当长的一段时间里,企业的存储系统管理者却不得不这样做。传统磁盘存储设备购买和配置的方
按理说,没有人愿意为自己不曾使用的东西付钱,但在过去相当长的一段时间里,企业的存储系统管理者却不得不这样做。传统磁盘存储设备购买和配置的方式非常死板,导致存储设备的空间利用率始终在低水平徘徊。因此过去十年间,如何提升存储效率一直是业内的热点主题,并成为大多数存储专家研究的目标。但迄今为止,只有自动精简配置技术在这方面实现了突破,产生了实实在在的效益。

  自动精简配置的概念也许很容易理解,但它事实上却是一项复杂的技术。如果一个磁盘阵列仅仅针对实际的数据分配存储空间,那么它就能比传统存储保存多得多的数据量。而传统存储会占用所有未来才可能用到的空间(从自动精简配置的角度看,其实没有任何必要)。此外,从磁盘阵列上移除那些应用程序创建和使用的数据有相当多的步骤,到目前为止还没有一种标准的通信机制能帮助存储识别应用层的数据到底有没有被使用。

  各存储厂商针对这些问题所用的方法五花八门,但那些最有效的机制往往很难用在过去的存储阵列上。这就是为什么新一代存储系统往往来自于那些小公司,包括了高效的自动精简配置技术,且已经发展了较长的时间。而那些行业领导型公司,也许直到最近才开始增加此类功能。

  精简写分配

  在传统存储设备里,磁盘与服务器端的可见容量是一一对应的。对于块存储技术而言,服务器端看到的是一个固定大小的盘、卷或者LUN,而且空间中的每一个(数据)位都指向后端磁盘阵列中相应的磁盘驱动器。比如Windows Server中C盘的空间是100GB,那么磁盘阵列里就一定会有几块磁盘组成RAID组,并提供这100GB的可访问预留空间。

  最基本的自动精简配置应用是从传统的空间分配方式直接演化而来的。所有的存储空间汇集到一个资源池中,并使用统一大小的“页面”将空间分块,最终,按需分配给服务器的是资源池中的“页面 “而不是最初的存储空间。在我们提及的例子中,100GB大小的C盘可能只包含10GB的文件数据,而映射到后端磁盘阵列中的实际使用空间也仅仅10GB 而已。如果服务器端有新的文件写入,阵列端则会从空闲资源池中划拨新的空间给服务器。

  这种“随写随分配”的自动精简配置方式今天已经相当普及。多数中端和企业级存储阵列以及一些小型设备都包含这种功能。其中,有些产品是内置的原生功能;有的产品需要通过附加选件实现。不过,这个方式也有一定的问题。

  一个显而易见的问题在于,这样的系统只能精简一次。在写入新文件时,大多数文件系统倾向于使用新的空间,以避免出现碎片;在删除内容时,只会在文件系统层简单的将该文件打上不可用标记,而不会写零擦除或将空间释放给后端的磁盘阵列。这些文件系统最终会吞噬掉全部预分配给它们的空间,即使并没有太多的额外数据写进来。这不仅仅降低了系统的效率,而且会带来过量使用(over-commit)的风险,一旦磁盘阵列不能响应空间增加的请求,写操作将陷入停顿。

  这里我们要表达的观点是,没有精简空间回收功能的自动精简配置是没有价值的,因为长期使用下来,用户并不会获得太多的收益。另外,多数的存储管理员主观上认为“精简的存储”必须始终保持“精简”,所以有效地回收闲置空间正在迅速成为新的功能需求。

  精简回收的挑战

  对于自动精简配置技术来说,回收闲置空间是比准确分配空间更难实现的部分。在各种自动精简配置的实践中,是否能让闲置空间返回空闲存储池是差异的关键,而且到目前为止,在这一点上业内各公司仍然处于各行其是的状态。

  难以实现精简回收功能的根源在于应用程序和存储系统之间缺乏沟通。像上文提到的那样,文件系统不会有精简的“意识”,当一份空间不在被使用时,没有现成的机制去通报这些情况。而有效自动精简配置的关键就是要发现回收闲置空间的机会。这里有两种方法可以从底层实现这一机制:

  • 存储阵列可以侦听其接收和保存的数据,并且当出现回收空间的机会时,阵列能够尝试去实现这个操作。
  • 修改服务器端的设置,当空间不在使用时,从服务器端发信号给后端的磁盘阵列,提示阵列实行空间回收。

  前一种方法技术上较难实现,但可能更有效,因为操作系统厂商似乎对为其产品增加精简功能并没有太多的热情。像Data Robotics公司的Drobo存储系统就可以侦听某些常见的分区和文件系统类型,并判定出哪些磁盘块是空闲的,之后进行回收和再利用。但是,考虑到可用的操作系统、应用程序和卷管理器软件的数量十分庞大,因此这种技术实现起来是极其困难的。

  而对于那些采用后一种精简配置方法的企业来说,关键的话题则是改进服务器和存储系统之间的通讯机制。

  全零页回收

  最有名的精简使能技术也许就是“全零页回收(zero page reclaim)”。磁盘阵列以页面为单位划分存储空间,并且按着存储数据的需要分配页面。如果发现某个页面的内容全部为0,那么这个页面将被回收到空闲资源池。未来发生的任何“读请求“都会产生出全零页面,而任何的”写请求“都会触发另一个页面被分配出去。当然了,技术实现不可能像说的这么简单。

  事实上全部写零可能是有问题的。毕竟,写一个0与写一个1需要消耗的CPU和 I/O资源是一样的,而服务器和存储系统为此损耗的效率也不亚于容量的浪费。为此,负责SCSI存储接口标准的“T10技术委员会“已经指定了一个叫做 “WRITE_SAME”的SCSI命令,用以消除重复的I/O,而且,该命令还衍生出所谓的“丢弃位(discard bit)”,用来通知磁盘阵列它们不再需要保存那些全零数据。

  大多数磁盘阵列还不具备在写操作过程中发现全零页的能力。相反,它们会先将数据写入磁盘,随后通过一个扫描进程找出并丢弃那些全零的数据页。因此,只有在完成扫描和丢弃操作之后,空间才能释放出来。这个进程可以通过后台策略自动运行,亦可让管理员手动开启。有些磁盘阵列能在做卷镜像或迁移的时候发现全零页,进一步改进了空间的利用率。

  即使一个磁盘阵列有完善的全零页回收能力,那也只是在有大量的0数据写入时才有用。这就意味着要委托服务器端必须写0填充那些不再使用的空间,而这对于服务器端来说并不是一个典型的默认的操作。因此多数操作系统都需要一个命令,像Windows里边的“sdelete –c“或者有类似NetApp SnapDrive的东西去执行这个操作,当然只是偶尔才运行一次。

  应用层的角色

  还有些应用程序,像VMware ESX的数据卷,在创建新空间时就会用全零位填充,而ESX的命令“eagerzeroedthick“甚至能够将空间清除。另外,尽管还存在一些兼容性的问题,但在VMotion应用上,ESX显然正在变得越来越“精简”。ESX 4.1版本中增加的VAAI(vStorage APIs for Array Intergration)内嵌了“block zeroing”功能,可以支持多款指定的存储产品。ESX使用支持T10 ”WRITE_SAME”命令的插件(plug-in,插件既可以是定制的,亦或是通用的)给后端的磁盘阵列发信号,告知阵列去释放那些VMFS不再占用的空间。

  Symantec也是率先支持自动精简配置的厂商。他们有Veritas Thin Reclamation API,该API集成在Veritas Storage Foundation产品中,可以广泛的支持大多数主流的存储阵列。它使用多种通信机制去释放不需要的空间,并且与VxFS文件系统和volume manager产品完全集成在一起。Storage Foundation还包含一个SmartMove迁移工具,该工具可以帮助精简阵列只转移那些包含实际数据的块。

  精简技术在其他系统中也在同步发展。有一个标准的ATA TRIM命令,可以发送精简回收的信号,就像SCSI协议里对应的UNMAP命令一样。不过TRIM主要是用来支持固态存储。Microsoft和 Linux现在都支持TRIM,因此在未来同样能够增加对自动精简配置的支持,这些操作系统公司还可以改进其文件系统中关于存储分配和释放的机制。

  越来越精简

  自动精简配置技术并非没有争议,但是好处也很多。它是少数几个真正可以提升存储实际利用率的技术之一,即便问题的核心可能与技术无关。虽然精简配置技术掩饰存储空间局限性的能力以及分配空间的过程尚存某些负面的因素,但随着技术的改进,以及精简回收工作越来越自动化,未来在企业级存储领域,该技术必将成为重要的标准。

  对于自动精简配置应用,我们应该关注什么?

  在评估一个支持自动精简配置的存储阵列的时候,请仔细考虑下面的问题。这些问题总体上反映了我们各个方面的疑虑。注意,并不是所有情况下全部因素都必须考虑。

  • 自动精简配置功能是包含在磁盘阵列的基础报价中,还是一个需要单独付费的option?
  • 磁盘阵列是否支持全零页回收?以及回收进程运行的频率?
  • 页面的大小或精简配置增量分配的大小是多少?
  • 快照、镜像和复制操作是否支持自动精简配置?是否支持从非精简配置复制到精简配置?
  • 当磁盘阵列空间写满之后会出现什么情况?报警、释放空间以及挂起写操作的流程是什么?
  • 磁盘阵列是否支持WRITE_SAME命令?是否支持SCSI UNMAP或ATA TRIM命令?
  • 是否有可与该磁盘阵列集成的支持“block zeroing”的VAAI插件?是否是基于T10的插件,还是为该产品系列定制的插件?

  空间浪费的根源

  一个DBA想:“我可能需要500GB或更多的空间给应用程序“,为了稳妥起见,他向存储管理员要了1TB的空间。而存储管理者们则保有同样的想法,为了让DBA满意的离开,因此他们给DBA分配了2个TB的存储资源。类似的故事经常用来形容存储空间利用率的糟糕状况,但这是全部真实情况吗?

  在大多数企业存储环境中,低下的空间利用率可能有许多原因:

  • 年度和项目预算周期制度导致了超买情况的发生,有些超买的存储空间也许永远不会用到。
  • 无效的资源监测和容量计划过程并不能搞清楚真实的空间需求。
  • 存储网络不够完善,导致部分空间资源无法分配给需要空间的服务器。
  • 不连续的空间划拨过程导致有些空间虽然被分配,但可能永远也无法被用到。
  • 操作系统和文件系统缺乏灵活性,当存储需求改变时,难以扩展或收缩。

  以上列举的许多问题,使用自动精简配置都是有效的,但它也并非万能。如果采购流程和容量计划做的很差,那么精简技术的很多优点也无从发挥。如果多个孤立的SAN和SAN之间无法访问,那么其中的空闲空间也无法利用。但这里要强调的是,一个系统即使只具备最基本的自动精简配置功能,那么对于改善闲置空间的利用率也将大有帮助。

  自动精简配置对TCO的影响

  把多个企业级存储解决方案放在一起比较 TCO(total cost of ownership,总拥有成本)的高低很容易引起争议,因为难免会受到人为主观因素的影响,评估模型往往也不够完善,衡量各厂商的标准也不一致。因此,企业在花钱采购那些用于节约成本、提升效率的技术—如自动精简配置—之前,最明智的做法是创建一个内部使用的评估模型充当检测工具,以便验证厂商提供的结论和承诺。

  完整的TCO涵盖的不仅是硬件和软件的成本,还包括运行维护、数据中心成本,以及与采购、迁移、产品淘汰等活动相关的费用,以上必须一并考虑。一条好的经验是用乘积法来衡量低效率分配存储资源所产生的影响:每个主机每剩余1GB的闲置空间,我们就计入双倍的实际成本,那么随着端到端的存储利用率平均低于25%,这个乘积的结果值就会快速的增加。

  这样的成本模型往往会揭示出令人吃惊的事实,硬盘(或固态盘)驱动器的存储容量成本只是TCO的一小部分,通常不到总体的15%。但这并不意味着追求更高的空间利用率是事倍功半。从解决存储利用率开始着手消减乘积的结果,对TCO产生的影响要远大于单纯的采用大容量硬盘。

  考虑到自动精简配置的操作优势,以及存储密度的因素,精简系统需要的管理开销可能更低,因为容量的分配不会受到传统规则的制约。但这样也可能会导致糟糕的状况出现:比如磁盘阵列分配过度,当写入的数据超过实际物理容量,应用程序就不得不停止运行。因此,最好的精简配置存储系统应该是高度虚拟化的、灵活、且监控功能完善,允许改进操作效率,并且保持较高的空间利用率

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的