揭密自动精简配置:瘦虚拟磁盘的优势

在VMware ESX 3时代,很多IT人员对瘦虚拟磁盘(它可以随着写入数据的增加而自动增长)的使用持保留意见。大家认为精简盘的性能表现不能跟容量固定的“胖虚拟磁盘”相比。

尽管大量针对瘦虚拟磁盘的研究都表明几乎没有性能损耗。现在VMware在vSphere的用户界面中也开始支持精简盘的创建,自动精简配置功能的使用范围需要被重新规划已经成为流行的观点。

本文中,TechTarget中国特约专家Mike Laverick剖析了几点关于瘦虚拟磁盘的常见误解及其实际使用案例,包括如何克服自动精简配置的一些问题。

对自动精简配置的误解

用户不接受瘦虚拟磁盘是考虑到会给虚拟机带来大量的额外IOPS压力——尽管研究表明胖磁盘可以带来的性能改善微乎其微。不过用户还是习惯在一些IOPS压力很小或几乎没有(例如域名服务器和DHCP服务器等)的虚拟机上使用精简盘。

我并不认同这种做法。自动精简配置可以节省大量的磁盘空间并省去管理员在考虑“该为虚拟机分配多大磁盘空间”等问题时的烦恼。

在瘦虚拟磁盘还不太普及的时候,传统的磁盘如果设置太大会带来存储空间浪费;太小的话虚拟机所需的空间增大时又会产生溢出。这在存储空间非常有限的实验室环境下是经常会遇到的。

克服自动精简配置的相关问题

这并非指自动精简配置就没有任何潜在问题。如果您对陷阱了解不够的话,瘦磁盘会带来灾难性后果。例如,经常出现的情况是创建的虚拟磁盘占满了分配的LUN/卷大小。假设创建了10台虚拟机,每台配有40GB大小的精简盘。最初,精简盘消耗的只是很少的几MB空间,但是当这些磁盘全都写满时总计需要400GB的物理空间。这样,如果设置的LUN/卷空间大小只有350GB时,事情变得非常糟糕。

这种情况并非不可能。有很多看起来不起眼的虚拟机任务会导致瘦磁盘的空间快速膨胀。首先,请注意一下在Windows系统内部您是如何格式化磁盘的。在Windows中,我们被告知不要使用快速格式化功能,因为它在很多环境下都会降低磁盘读写性能。

但如果对精简盘使用完整格式化,该过程会写入虚拟磁盘的每个扇区——这样精简盘的空间就快速增长到最大容量。这传达了一个信息:对于精简盘在Windows系统中要使用快速格式化方法。

我的精简盘无法压缩

还有一些可能导致精简盘快速膨胀的操作,包括VMware Tool中的压缩功能——用于删除文件释放磁盘空间。在虚拟机被制作完成并用作模板之前,我通常会建议用户对磁盘进行碎片整理并运行压缩功能,以达到磁盘优化的目的。

当在Windows中进行删除文件操作的时候,数据并没有从磁盘中被真正删除。只不过是在文件系统中做了标记而已。这样的话,即使是被删除的文件依然会占用磁盘空间。

压缩功能并非适用于所有的虚拟磁盘类型或操作系统。根据使用的VMware Tools版本不同,某些情况下可能被禁用。

考虑到这样的过程,碎片整理和压缩功能在精简盘上起不到任何作用。这两个操作都会四处移动文件并执行写入操作,这些都会增加精简盘的大小。而且您还会发现在受影响的虚拟机内无法使用压缩功能。

如果您的某个任务进程经常定期执行创建和删除大文件的操作,那么精简盘很快就会增长起来,而且这部分剩余空间还无法还原到存储阵列中。那么我们如何才能回收这部分磁盘空间?通过SDelete命令加上-c作为参数可以安全地把虚拟机内被删除的文件清除掉。

这个操作会导致虚拟磁盘临时增大。但是如果使用了VMware的Storage vMotion和精简盘功能,就可以把虚拟磁盘压缩到实际空间大小。过程麻烦但很有效。

我希望VMware可以在数据存储浏览终端中添加压缩功能,包括扩充选项(该扩充选项用于把瘦磁盘转化为胖磁盘)。

随着VMware和存储合作伙伴合作的加深,这个问题最终可以解决,并通过vStorage API添加更多新的功能。这样存储阵列就可以知道虚拟机内哪些文件被删除了,然后对相应的空间进行释放以显示磁盘的实际空间大小。

即使这样,如果虚拟机经常定期进行创建和删除大文件操作,依然要考虑坚持对该虚拟机使用胖虚拟磁盘方式。