在虚拟 Vmware 或 Hyper-V 客户机的运行中,通常会建议对主机和虚拟磁盘映像进行碎片整理,以提高性能。
就像cmd: vmware-vdiskmanager -d <file.vmdk> works great.
但我找不到任何定性证据表明在客户虚拟机内部进行碎片整理可以提高性能。是否有人能提供除商业碎片整理者白皮书之外的建议或证据表明在客户虚拟机内部进行碎片整理有帮助?
答案1
这取决于存储的性能和应用程序的性能。当前虚拟化主机面临的挑战是,每个客户机只能获得 1 个主机总线适配器 (HBA) 到任何给定 LUN 的吞吐量。(唯一的例外是最新 VMware vSphere v4.0 - 最高级别的许可让您有机会运行 EMC 的多路径软件。)因此,如果您的吞吐量瓶颈是单个 HBA,即使没有其他客户机正在使用存储,碎片通常也不会成为虚拟链中最薄弱的环节。
此外,考虑到多个虚拟客户机通常共享同一个 SAN LUN。如果三台服务器同时访问其驱动器,并且它们都共享同一个物理阵列,那么所有访问本质上都是随机的。
只有在每台客户机都有自己专用的 SAN 阵列,并且 HBA 吞吐量不是瓶颈的情况下,我才会考虑对虚拟磁盘进行碎片整理。
答案2
我的理解是,vdisk 文件是一种类似于物理磁盘的文件。所以我认为问题是,vdiskmanager 是否真正了解此磁盘上的文件系统。我认为它不了解,这就是为什么在操作系统中进行碎片整理应该会有所帮助。
答案3
既然您提到了 vmware 和 hyper-v 客户机,我假设您没有运行 vmware 的 ESX 版本,而是使用更多的托管模型。对主机操作系统进行碎片整理是个好主意。
不过,在客户机内部进行碎片整理可能会很糟糕。我只使用过 vmware 的产品,没有使用过 hyper-v,但是如果您的客户机带有快照,碎片整理可能会导致您使用大量磁盘空间。
快照是对父磁盘文件所做的更改的增量。当您在客户机中更新块时,增量的大小会增加。如果碎片整理触及每个块,您的快照的大小将会增加,从而占用与原始虚拟硬盘相同的磁盘空间。这只是需要注意的一点。
答案4
Brent 的回答确实很有道理。今天早上研究这个主题时,我偶然发现了几个链接,它们建议你像整理物理服务器一样整理虚拟机。
http://www.vmware.com/support/gsx3/doc/disks_defrag_shrink_gsx.html
http://www.dciginc.com/2008/10/the-physical-challenges-of-disk-defragmentati.html
如果我们假设有多个虚拟机同时访问 LUN,那么碎片整理的价值就会像 Brent 所说的那样有限。但同时访问 LUN 的情况并不总是如此,那么虚拟机磁盘的内部碎片整理是否仍然具有一些价值?