在运行虚拟 Vmware 或 Hyper-V 来宾时,通常会建议对主机和虚拟磁盘映像进行碎片整理,从而提高性能。
像一个cmd: vmware-vdiskmanager -d <file.vmdk> works great.
然而,我找不到任何定性证据表明在来宾 VM 内部进行碎片整理可以提高性能。有没有人有不是来自商业碎片整理者白皮书的建议或证据表明内部访客碎片整理有帮助?
在运行虚拟 Vmware 或 Hyper-V 来宾时,通常会建议对主机和虚拟磁盘映像进行碎片整理,从而提高性能。
像一个cmd: vmware-vdiskmanager -d <file.vmdk> works great.
然而,我找不到任何定性证据表明在来宾 VM 内部进行碎片整理可以提高性能。有没有人有不是来自商业碎片整理者白皮书的建议或证据表明内部访客碎片整理有帮助?
这取决于您的存储性能和应用程序的性能。当前虚拟化主机面临的挑战是每个来宾只能获得 1 个主机总线适配器 (HBA) 的吞吐量到任何给定的 LUN。(唯一的例外是最新的 VMware vSphere v4.0 - 最高级别的许可让您有机会运行 EMC 的多路径软件。)因此,如果您的吞吐量瓶颈是单个 HBA,即使没有其他来宾使用存储,碎片通常不会成为虚拟链中最薄弱的环节。
另外,考虑到几个虚拟客户通常共享同一个 SAN lun 的事实。如果三台服务器同时访问它们的驱动器,并且它们都共享同一个物理阵列,那么所有访问基本上都是随机的。
我唯一会考虑对虚拟磁盘进行碎片整理的情况是,如果每个客户都有自己的专用 SAN 阵列,并且 HBA 吞吐量不是瓶颈。
我的理解是 vdisk 文件是一个像物理磁盘一样的文件。所以我认为问题是,vdiskmanager 是否真正了解该磁盘上的文件系统。我认为它没有,这就是为什么在操作系统内进行碎片整理应该有所帮助。
由于您提到了 vmware 和 hyper-v 来宾,我假设您没有运行 ESX 版本的 vmware,而是使用更多的托管模型。对主机操作系统进行碎片整理是个好主意。
虽然在客人内部进行碎片整理可能很糟糕。我只对 vmware 的产品有经验,对 hyper-v 没有经验,但是如果您有一个带有快照的客户机,碎片整理可能会导致您使用大量磁盘空间。
快照是对父磁盘文件所做更改的增量。当您更新来宾中的块时,增量的大小会增加。如果碎片整理涉及每个块,您的快照将增加大小以消耗与原始虚拟硬盘驱动器相同的磁盘空间。只是需要注意的事情。
布伦特的回答当然是明智的。我今天早上在研究这个主题时遇到了几个链接,建议你应该像对物理服务器一样对 VM 进行碎片整理。
http://itknowledgeexchange.techtarget.com/virtualization-pro/defragmenting-virtual-machine-disk-files/
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 的同时访问并不总是如此,那么 VM 磁盘的内部碎片整理是否仍然提供一些价值?