如何在 Hyper-V 2012 主機分割區僅為 VM 保留 RAM?

如何在 Hyper-V 2012 主機分割區僅為 VM 保留 RAM?

我遇到過這樣的情況:Hyper-V 2012 群集節點無法支援 2 個虛擬機,而我認為它應該支援。目前,我正在使用 96GB RAM,並且希望運行 2 個 47GB 虛擬機器(靜態 RAM)。這為主機留下了 2GB,這應該是足夠的。但是,我無法運行第二個虛擬機,因為軟體抱怨沒有足夠的記憶體。

接下來,我將每個虛擬機器減少到 46GB,但它仍然不支援 2 個虛擬機器。從節點運行“taskmgr”,它報告 51GB“正在使用”,“44.9GB”可用。我不明白為什麼 46GB 的虛擬機會會在主機分割區產生 5GB 的開銷。查看正在運行的進程,列出的 RAM 加起來不到 500MB。

我想告訴 Hyper-V 明確保留 2GB 以外的所有空間,僅供 VM 使用。

此外,最好了解為什麼虛擬機器管理程式「需要」5GB。有沒有辦法知道 Hyper-V 在內部使用 RAM 做什麼?或者,Hyper-V 2012 是否有新的運算方式來計算主機實際上需要多少 RAM(因為 2GB 還不夠)?

編輯 - 2014-02-14

在檢查了 4 個不同的 Hyper-V Server 2012r2 主機和 2008r2 後,非分頁池隨著實體安裝的 RAM 線性增長。 CPU 是 AMD 還是 Intel 並不重要。主機是否屬於 Windows 叢集並不重要。主機是否加入網域並不重要。主機上運行的虛擬機器數量(或這些虛擬機器消耗了多少 RAM)並不重要。最後,我認為這也是 2012r1 的行為,因為當 2012r2 主機都是 2012r1 時我曾經出現過這些症狀。

在所有情況下,我發現將已安裝的 RAM 量(以 GB 為單位)乘以 0.0425 將告訴您非分頁池丟失了多少 RAM(以 GB 為單位)。 (這是一個非常接近估計。

因此,在微軟修復他們的軟體,或正式承認這種行為是設計使然之前,答案是使用每個人常用的計算(如下面的答案所示),然後加上上述計算的結果來解釋您將因非分頁池而失去RAM。 (或者,如果您願意,我這裡有一個帶有示例的摘要。

PS:我覺得重要的是要注意我一直在寫“GB”,但我只是使用 Windows 報告的內容。 Windows 和 RAMMap 報告的數字不是 GB/KB,而是實際上 GiB/KiB,因此將非分頁池計算結果乘以 1024,將其與 RAMMap 報告的「K」數字進行比較。

答案1

來源

300 MB 用於虛擬機器管理程序,加上32 MB 用於分配給每個虛擬機的第一個GB RAM,加上另外8 MB 用於分配給每個虛擬機的每個額外GB RAM,再加上512 MB 用於在根分割區上執行的主機作業系統

作為一般經驗法則,計劃為根分區分配至少 512 MB 內存,以提供 I/O 虛擬化、快照文件支援和子分區管理等服務。

第一台虛擬機器 300+32+(45*8)=692MB

兩台虛擬機器均為 692+32+(45*8)=1084

1084+512=1596MB 總計佔經驗法則

所以這只是虛擬機器管理程式的消耗。現在考慮到即使配置了第一台虛擬機,您也使用了超過 5 GB 的空間。我建議在命令提示字元中查看任務清單的輸出,並尋找消耗 RAM 的伺服器進程

相關內容