VMware vSphere資源分配管理觀念入門

在虛擬化的世界裡,資源的分配與管理是很重要的課題,但也最容易被忽略或誤解。在此要介紹的是一些有關VMware vSphere虛擬化資源的重要觀念,主要內容為Virtual CPU、Memory的運作概念,以及VM的資源設定配置基礎,還有了解何謂資源池(Resource Pool)。

舉個例子,如果你準備將公司機房的老舊伺服器改成虛擬化的方式運作,在評估導入的階段,決定先採購一台全新的實體伺服器,並且將幾個不是擔任重要任務的老舊伺服器,以P2V的方式移轉成VM,如果成效好的話,再逐步地將重要關鍵的伺服器線上P2V轉移過去。

假設這些老舊伺服器當初購買的配置都是2GB的RAM,我們現在打算先移轉5台老舊伺服器變成VM,集中在新採購的伺服器上運作,那麼新伺服器在購買的時候應該配置多少記憶體呢?

既然要將5部老舊主機P2V,而這些老舊主機每部都是配置2GB記憶體,所以採購新伺服器的時候,假設一口氣安裝了10GB的實體記憶體(在此排除TPS、COS、VMkernel memory、VM memory overhead等因素)。

等到你真正地完成5部老舊伺服器的P2V動作,然後從Virtual Hardware、Guest OS的工作管理員資訊中,確定每個VM都分配到2GB的記憶體。5個VM經過幾天測試也都運作得很順暢,甚至效能比以前更好。

整體運作效能提升可以理解,畢竟多年前的老舊伺服器,可能當時需要4顆CPU才跑得順的應用,現在只要一顆CPU就能應付得了。但是你同時也發現了另外一件事,透過vSphere Client顯示ESX/ESXi host的資訊,配備10GB實體記憶體的新伺服器,居然只被用了一半(5GB)左右。

這到底是怎麼一回事呢?明明每個VM的Virtual Hardware配置的都是2GB,在Windows OS看到的可用記憶體也都是2GB,但為什麼5個VM運作時只吃了總共5GB的實體記憶體?

這就是虛擬化的好處。每個VM雖然配置了2GB記憶體,但是它不見得實際需要用到這麼多。由於實體的記憶體是由VMkernel統籌分配,VM需要用多少才給多少,不需要使用就不給,甚至收回。

假設VM1開機後運作提供服務,只使用了500MB、VM2實際使用1GB、VM3實際使用700MB、VM4實際使用2GB、VM5實際使用800MB,那Hypervisor就分配5,000MB即可讓所有的VM運作正常。

這在以往實體環境裡很難辦到,因為老舊的實體伺服器,記憶體插了2GB的RAM,就算OS只用了一半不到,剩下的也無法挪為他用。

Memory over-commit可以在Host上容納更多的VM而不增加記憶體成本。不需要很狹隘地依照Virtual Hardware的配置,每個VM通通先切2GB出去,將實體伺服器的記憶體全部分配完,VM就算用不到額外的RAM,也不會釋放出來,使hypervisor回收再利用。

圖4的範例顯示,5個VM實際使用了多少記憶體,要多少才給多少,雖然在Guest OS的工作管理員看到的Available Memory是2GB,但是只要實際上沒有用這麼多,就先不給。


▲圖4 5個VM使用記憶體,要多少才給多少。


TPS(Transparent Page Sharing)

承上題,當你發現採購的新伺服器只使用了一半的記憶體,當然會想再P2V多一點VM來耗用這些記憶體,假設一切條件不變,你有另外5部老舊伺服器,配置都是2GB。

但經過精算評估後,發現恰好他們實際記憶體用量總共也是約5GB左右,於是你就將另外這5部老舊機器再虛擬化到這個新的伺服器上。

如此一來,現在就有了10個VM在這個ESX/ESXi host上了。想說這樣應該可以將10GB的記憶體全部佔滿了吧?經過幾天測試確認VM運作正常後,以vSphere Client去查看ESXi host資訊,很驚訝地發現,實體記憶體只被用掉7.5GB,還剩下約25%的記憶體資源沒有使用到。

怎麼會這樣呢?多出來這25%的記憶體資源怎麼來的?

這就是現在要為大家介紹的TPS(Transparent Page Sharing)功能。如果公司機房的伺服器OS長的都差不多的話(例如都是Windows Server 2003),那麼虛擬化到同一個ESXi host運作之後,VM彼此之間的許多Instances、應用程式以及核心管理程式的載入,有很多的地方都是相同、類似的。

這些相同的地方呢,其實可以讓VM的Memory Page共用同一份,避免太多相同重複的實體RAM佔用,而VMkernel會去掃描VM的RAM是否有相同重複的部分,如果有就對應到相同的記憶體區塊。如此一來,又可節省了不少記憶體出來。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!