毫无疑问,全闪存阵列可以解决目前企业数据中心的大多数性能问题。但是这种效率是有代价的。因此,全闪存存储阵列的供应商正在寻找方法,通过自动精简配置、重复数据删除和压缩等各种各样的存储效率提升技术来大限度地运用这些系统。
在本文中,我们将研究每一种技术,这样你就可以了解其优劣,并对哪些特性在全闪存阵列的选择过程中应该获得高比重得出结论。
自动精简配置
自动精简配置正日益成为目前所有类型的存储系统的一个标准特性,无论它们是全闪存、混合或者基于硬盘驱动器。自动精简配置在应用程序需要的时候动态地分配存储系统的存储容量。相反,传统密集配置(thick provisioning)分配应用程序所有者期望它们预先需要的容量。
例如,假设应用程序所有者要求存储管理员把1TB的容量分配给他们正在联机的新的应用程序。毋容置疑,应用程序不会长时间地需要那1TB的存储,但是在传统密集配置的环境中,那1TB被完全地分配给该应用程序而没有任何其他应用程序可以使用该容量。更糟糕的是,如果该应用程序超过1TB的话,增大传统密集配置卷是一个需要人工干预的复杂的问题,可能会导致停机。
在同样情况下,经过自动精简配置的卷可以被设定为1TB或者以上的容量,但是只有在应用程序需要的时候,卷的容量才会被分配。通过使用自动精简配置,如果应用程序花费一年或以上的时间达到分配容量,也无关紧要,因为其容量在此期间对于任何应用程序都可用。此外,存储管理员可以提出两倍或三倍分配请求,毫不影响物理容量的利用率。
在全闪存阵列中,自动精简配置应该被视为一项必需的特性。压缩和重复数据删除等经常被谈及的存储效率特性无法提供专门用于特定服务器或者应用程序的可用空间方面的效率。
但是用户需要注意对使用自动精简配置的影响。首先,自动精简配置可以在最糟糕的时候影响性能:应用程序正在添加或修改数据的时候。原因在于:当应用程序添加数据的时候,自动精简配置过程需要把容量分配到应用程序正在使用的卷。
这个过程需要时间,尤其是在闪存上,因为分配实际上是一个写过程,这是基于闪存的系统必须执行的、最缓慢而且资源最密集的活动。好消息是:闪存的写性能仍然比硬盘快,因此对性能的影响应该不太明显。
自动精简配置并非都相同
当你评估全闪存阵列的时候,必须明白并非所有的自动精简配置都是相同的。厂商使用不同的技术来提供自动精简配置,效果如何在很大程度上取决于它们对底层的存储进行虚拟化的能力。
自动精简配置可以按两种方式之一被提供。第一,它可以按请求的确切的时点容量来提供;因此,如果2MB的数据准备被应用程序写入的话,那么存储系统首先向卷分配2 MB容量,然后应用程序写入数据。这种方法完全具有容量效率,对闪存来说是最理想的,只可惜如果大量的这些即时(on-the-fly)分配必须同时在几十台服务器和数以百计的虚拟机上发生的话,会影响性能。无论存储系统是基于HDD或者基于闪存,这个自动精简配置的方法需要设计优良的存储软件以及合适的存储处理能力,以避免性能影响。
有些厂商通过提前向每个自动精简配置卷预分配多达几百GB的较大容量来提供类似自动精简配置的体验。有时这被称为臃肿配置,因为这种方法提前分配容量。这种自动精简配置的方法降低了必须不断地分配空间的性能需求,但不具有容量效率,与消费级别的闪存存储相比,这对高价的闪存存储是一个更大的问题(想想你用几块钱美金就可以买到的U盘)。在几十台物理和几百台虚拟服务器上的多个“几百GB”加起来等于几TB的闲置容量,在闪存上这是相当昂贵的。
第二种方法也会给基于闪存的存储系统造成不仅是浪费容量的问题。这是因为,当达到临界值的时候,分配另外一个几百GB是一个在应用程序正准备写自己的全新数据之前必须发生的、大规模的、同时的写操作,哪怕应用程序写只包括几KB的数据。
结果可能是延时的增加,这表现为不稳定的应用程序性能。在卷以较小的增量被扩展的时候,性能实际上受到较小的影响。提供持续的响应时间的闪存的高性能把即时的担心降到最低。
自动精简配置对于基于闪存的系统是一项关键的特性。闪存买家应该寻找内置自动精简配置的存储系统,而不是事后增加。这些系统需要提供精细级别的存储分配,为的是不需要撤销过度分配的容量、浪费容量并导致性能问题。