再議Hyper-V 動態內存管理和內存過量使用
實際操作中,慢慢成長起來的經驗將會成爲一份可遇而不可求的金玉。幾年前,堅信虛擬化將會讓我們的IT運維變得隨心所欲,到現在我反而發現了這項全新業務的管理讓我們常常犯下新的錯誤。因爲家庭中的一些瑣事,我退出了MVP連任申請(雖然已經連續3+1年享受這一榮耀),但我發現這和老方所來信中提供得那樣:“這並不意味着離開,我隨時會回來”。很早以前寫過一篇《用一份PPT開始你的Hyper-v虛擬化之旅》,我想還是應該延續接下來的討論。
內存過量和動態內存都是在追求虛擬機密度最大化
我們知道,在一個虛擬化的服務器環境中,缺乏足夠的物理內存,將會直接影響到虛擬機的設計密度,而設計時我們會將遷移所用的物理內存技術器精確到MB,當然這肯定還會影響到整個系統的投資回報率,內存成了虛擬化的短板。而後,我發現vSphere開始提供內存過量使用技術,這項技術可以讓VMware虛擬機使用超過物理主機實際的內存容量,而虛擬機的位置又可以根據業務時段的不同,在不同的父分區下蹭吃蹭喝。但慢慢的,我開始關注這項前所未有的虛擬特性,這是因爲與之相比的機械磁盤速率實在低下,當使用過多的虛擬內存之時,虛擬機的性能直線下降,而這恰恰是我們在引入虛擬化之前儘量避免的一種錯誤設計。
還記得首次聽到“內存過量使用”這個術語時,有人大膽的提出了幾份觀點,但誰料想這些可能會引發今天挨板磚的局面。“內存過量使用”這個術語讓人曾經讓不熟悉虛擬化的人們有一種誤解,“內存溢出”?因爲過量使用似乎意味着過度利用資源。實際上,其想法是,即便沒有物理內存來支持爲系統配置的資源,也可以創建通常需要一定數量內存的多個虛擬機。基本上,藉助內存過量使用技術,分配給物理主機上多個虛擬機的內存數量可以超過主機上的物理內存數量,這允許物理主機上可以有更大的虛擬機密度。
動態內存(Dynamic Memory)是微軟Hyper-V R2 SP1讓人雞凍的新增功能,由於改進了虛擬內存分配的機制,這便同樣可以增加虛擬機和主機之間的比率,也就是虛擬機密度。但毋容置疑,缺少軟件廠商的支持策略,比如一些黑心的應用程序仍然會擴大其內存需求,捆綁硬件來銷售,這些都可能限制這一優勢的發揮。
一些嘮叨和建議
非常贊同Brien Posey(MVP)說的:“Hyper-V 的內存管理是一種藝術!”
動態內存應該是一項創舉,但必須遵守微軟的Hyper-V最佳實踐指南,以避免虛擬機缺少內存管理的藝術。我在查閱了kb and lib資料並進行了有針對性的測試之後,希望以下幾點能對你的工作有些幫助:
當Hyper-V動態內存在一個虛擬機上被啓用以後,這個虛擬機能立刻斷定它需要多少內存。然後主機分配給虛擬機要求的數量,以及一些額外的容量來作爲緩衝,如圖片中的“內存緩衝區”。如果一個主機中有多個虛擬機在運行,主機會自動在所有虛擬機間平衡內存的分配,圖片中的“內存權重”。