【IT168 技术】自动精简配置的概念也许很容易理解,但它事实上却是一项复杂的技术。如果一个磁盘阵列仅仅针对实际的数据分配存储空间,那么它就能比传统存储保存多得多的数据量。
传统存储会占用所有未来才可能用到的空间(从自动精简配置的角度看,其实没有任何必要)。此外,从磁盘阵列上移除那些应用程序创建和使用的数据有相当多的步骤,到目前为止还没有一种标准的通信机制能帮助存储识别应用层的数据到底有没有被使用。
各存储厂商针对这些问题所用的方法五花八门,但那些最有效的机制往往很难用在过去的存储阵列上。这就是为什么新一代存储系统往往来自于那些小公司,包括了高效的自动精简配置技术,且已经发展了较长的时间。而那些行业领导型公司,也许直到最近才开始增加此类功能。
精简写分配
在传统存储设备里,磁盘与服务器端的可见容量是一一对应的。对于块存储技术而言,服务器端看到的是一个固定大小的盘、卷或者LUN,而且空间中的每一个(数据)位都指向后端磁盘阵列中相应的磁盘驱动器。比如Windows Server中C盘的空间是100GB,那么磁盘阵列里就一定会有几块磁盘组成RAID组,并提供这100GB的可访问预留空间。
最基本的自动精简配置应用是从传统的空间分配方式直接演化而来的。所有的存储空间汇集到一个资源池中,并使用统一大小的“页面”将空间分块,最终,按需分配给服务器的是资源池中的“页面 ”而不是最初的存储空间。在我们提及的例子中,100GB大小的C盘可能只包含10GB的文件数据,而映射到后端磁盘阵列中的实际使用空间也仅仅10GB而已。如果服务器端有新的文件写入,阵列端则会从空闲资源池中划拨新的空间给服务器。
这种“随写随分配”的自动精简配置方式今天已经相当普及。多数中端和企业级存储阵列以及一些小型设备都包含这种功能。其中,有些产品是内置的原生功能;有的产品需要通过附加选件实现。不过,这个方式也有一定的问题。
一个显而易见的问题在于,这样的系统只能精简一次。在写入新文件时,大多数文件系统倾向于使用新的空间,以避免出现碎片;在删除内容时,只会在文件系统层简单的将该文件打上不可用标记,而不会写零擦除或将空间释放给后端的磁盘阵列。这些文件系统最终会吞噬掉全部预分配给它们的空间,即使并没有太多的额外数据写进来。这不仅仅降低了系统的效率,而且会带来过量使用(over-commit)的风险,一旦磁盘阵列不能响应空间增加的请求,写操作将陷入停顿。
这里我们要表达的观点是,没有精简空间回收功能的自动精简配置是没有价值的,因为长期使用下来,用户并不会获得太多的收益。另外,多数的存储管理员主观上认为“精简的存储”必须始终保持“精简”,所以有效地回收闲置空间正在迅速成为新的功能需求。