隨著能源價格上漲,最近有很多關于如何降低數據中心功率消耗的討論。VMware和微軟都提供了降低虛擬主機功率消耗的機制。
針對虛擬機電源管理,微軟和VMware采取了非常相似的方式。這兩種方式都是基于某些最基本的服務器虛擬化概念。
盡管單臺hypervisor完全能夠運行多臺虛擬機,但生產環境中從未僅使用單臺hypervisor。管理員通常不會承受hypervisor成為單點故障的風險。因此,大多數hypervisor,比如VMware ESXi和微軟Hyper-V都構建了集群。這樣一來,如果一臺hypervisor出現故障,那么集群中的其他hypervisor能夠繼續運行來自故障集群節點的虛擬機。
另一個概念是虛擬機可移動性。在Hyper-V和VMware環境中,虛擬機是便攜式的。正如之前提到的那樣,出現故障時,正在運行的虛擬機可以動態移動到另一個集群節點中。然而管理員也可以使用技術比如vMotion或在線遷移手動將正在運行的虛擬機從一臺主機遷移到另一臺。
管理員有很多不同的原因手動將正在運行的虛擬機遷移到不同主機。有時需要遷移虛擬機是因為需要對主機進行離線維護。其他情況下,管理員移動虛擬機可能是因為他認為該虛擬機在具有更多可用硬件資源的主機之上運行,能夠運行的更好。
微軟和VMware都創建了負載均衡,用于將正在運行的虛擬機動態遷移至不同的主機,這樣能夠以允許虛擬機盡可能高效運行的方式使用硬件資源。然而同樣的概念反過來可以節省功耗。并非在所有可用的主機服務器上都有虛擬機在運行,工作負載可以被整合到最少的主機服務器上,這樣可以將未被使用的主機服務器置于離線狀態以降低功耗。
當然在現實世界中,事情并非如此簡單。在hypervisor集群中,必須有一些節點保持在線運行,才能使集群能夠繼續發揮作用。進一步說,集群至少需要一些額外的可用容量,這樣才能夠預防hypervisor級的故障。因此,為能夠使用虛擬機功耗節約功能,規則要求最小數目的主機節點必須保持在線運行。例如在微軟環境中,至少要有5個集群節點必須保持在線運行(盡管如果集群是使用System Center Virtual Machine Manager創建的,需要的節點數可以減少到4個)。
最后一塊拼圖是服務器硬件必須支持遠程開關機。例如,針對Hyper-V集群節點,通過使用基板管理控制器,服務器必須支持帶外管理。
SCVMM并未包含在Hyper-V中,而是一款附加產品,通過SCVMM提供的動態優化以及功耗優化功能,微軟實現了負載均衡以及虛擬機功耗管理。VMware通過vSphere自身提供的動態資源調度提供了負載均衡以及功耗管理功能。
盡管電源管理主要基于關閉集群節點,但還有其他減少功耗的方式。在大多數數據中心中,很可能可以安全關閉一些虛擬機。例如,當沒人在辦公室時,組織可能不需要15個冗余的域控制器整晚運行。通過仔細規劃,管理員可能能夠識別出冗余的虛擬機并在每天下班后定時關閉這些虛擬機。當然通過調度可以在早上開啟這些虛擬機,這樣以來就能夠關閉更多的集群節點了。