默认情况下,VMware主机给每个虚拟机分配相同数量的CPU、RAM以及I/O资源。但是并不是所有ESXi的工作负载天生相同。
因为典型的VMware主机上运行多个具有不同工作负载的虚拟机,因此手动调整分配给每个虚拟机的资源是重要的。这一实践确保了每个工作负载接收足够的资源,而且资源被有效分配,能够在ESXi主机上放置数量最多的虚拟机。
测量VMware主机工作负载
调整VMware主机资源之前,你应该分析虚拟机工作负载。为查看ESXi当前资源分配情况,在vSphere Client中选择“资源分配”选项卡。如果没有配置资源设置,VMware主机资源将被平均分配。
图1 默认情况下,没有对虚拟机进行VMware主机资源限制
在“资源分配”选项卡下,你将看到当前使用的内存和CPU的总容量。如果当前使用的数字接近ESXi主机的***容量,你可以调整以提高主机效率。
图2 在重新分配资源前,查看主机的当前状态
查明主机当前资源的使用情况后,检查每个虚拟机的资源分配情况,你将发现更改CPU和内存设置的选项。为改变这些参数,单击“编辑”,打开虚拟机属性窗口。接下来选择“资源”选项卡访问资源使用设置。
VMware主机的CPU分配
对于CPU资源分配来说,你可以改变三个选项:
CPU限额:默认情况下,每个虚拟机获得1000份限额。为提高或降低虚拟机的优先级,你可以增加或减少虚拟机的限额。举例来说,如果你想确保繁忙的数据库服务器相对于不太繁忙的Web服务器使用两倍的CPU周期,设置数据库服务器的限额为2000,设置Web服务器的限额为500。
CPU资源的最小值:你可以留出一定数量的CPU资源,一直可供该虚拟机使用。
CPU资源的***值:虽然默认情况下不限制虚拟机可以使用的CPU周期,但在很多情况下设置一个合理的虚拟机通常不会超过的***值是有意义的。
图3 在繁忙的VMware主机上,调整虚拟机当前的CPU资源分配。
VMware主机的内存分配
对于内存资源,情况有所不同。每个虚拟机接受一个默认的内存分配,但是你可以基于虚拟机的工作负载更改分配给每个虚拟机的内存数量。甚至在你分配一定数量的内存给虚拟机之后,主机将按需动态给虚拟机分配内存,直到指定的标准。
如果想确保虚拟机总是得到一定数量的内存,同样可以指定最小分配。即使虚拟机没有处于运行状态,主机将不会分配这部分内存给另一个虚拟机。换句话说,通过增加预留给虚拟机的内存数量,减少了主机使用内存过量分配的灵活性。这反过来,限制了一个主机能够运行的虚拟机数量。
同样可以设置虚拟机的***内存,这不是真的有用。虚拟机***内存也是一个不能动态调整的固定数量的内存,同样限制了灵活性。
管理VMware主机I/O资源
同样可以限制虚拟机的IOPS值。默认情况下,不限制虚拟机每秒可以发送和接收的IO数,但是将数据库服务器可用的IOPS值设置为高于很少使用的Web服务器的IOPS可能是有意义的。要做到这一点,调整每个虚拟机的共享值。