97 期 - 調校 Hyper-V 3.0 R2 設定,完美兼顧效能與彈性


網管人雜誌

本文刊載於 網管人雜誌第 97 期 - 2014 年 2 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

1、前言
2、實作環境
3、實體伺服器硬體規格及功能
          中央處理器(CPU)
          記憶體(Memory)
          硬碟(Hard Disks)
          週邊匯流排及介面卡(Peripheral Bus & Adapter)
          電力配置優化
4、Hyper-V 主機效能調校
          專用的伺服器角色
          CPU 效能監控
          Guest NUMA 最佳化
          運作整合服務的 VM 虛擬主機
          VM 虛擬主機優化調校
5、結語





1、前言

Microsoft 於 2008 年 6 月時所發行的 Windows Server 2008 作業系統當中,便開始內建 Hyper-V 1.0 虛擬化技術,宣示要跨入虛擬化技術的領域內,經過多年的努力之後於 2012 年 10 月所發行的 Windows Server 2012 作業系統當中,已經演變為非常成熟的 Hyper-V 3.0 虛擬化技術,隔年在 2013 年 6 月 TechEd 2013 大會上,發佈 Windows Server 2012 R2 的技術預覽版本(Preview Version)。並於一年後也就是 2013 年 10 月正式發行 Windows Server 2012 R2 雲端作業系統(Cloud OS)

在雲端運算以及智慧型裝置等議題的推波助瀾之下,企業或組織對於投資報酬率(Return On Investment,ROI)整體持有成本(Total Cost of Ownership,TCO)等概念亦逐步提升。因此,近年來企業或組織部署及導入伺服器虛擬化平台已日漸普及。從 Gartner 的市調分析結果可以知道,企業及組織在 x86 主機運作VM虛擬主機的工作負載情況,由 2008 年的 12% 逐年成長至 2013 年時已達到 57%,如此的數據表示大部份的企業及組織,已經將虛擬化的應用從一般的測試研發轉換到正式營運環境當中。

本文將從如何選擇最適合安裝 Windows Server 2012 R2 的實體伺服器硬體規格開始談起,進而說明及討論該如何進行哪些最佳化配置及調校,以幫助您建構出效能及彈性最佳化的 Hyper-V 3.0 R2 虛擬化平台

圖 1、Windows Server 2012 R2 雲端作業系統示意圖





2、實作環境

  • 發行公司: Microsoft
  • 官方網址: http://www.microsoft.com
  • 作業系統: Windows Server 2012 R2
  • 軟體版本: 6.3
  • 評估下載: http://technet.microsoft.com/zh-tw/evalcenter/dn205286.aspx

圖 2、下載 Windows Server 2012 R2 映像檔





3、實體伺服器硬體規格及功能

當你要進行選購擔任虛擬化平台的實體伺服器之前,應該要考慮哪些硬體規格及細項,以避免屆時發生工作負載上的效能瓶頸,舉例來說 在預算有限的情況下,因太過著重於 CPU 處理能力及快取大小,卻反而忽略了記憶體空間,造成採購了擁有四顆 CPU 處理器但記憶體空間僅 32GB 的實體伺服器,可想而知將造成「伺服器合併(Server Consolidation)」比率降低。

中央處理器(CPU)

請注意!! Windows Server 作業系統從 2008 R2 版本開始,便提供 64 位元的作業系統版本(雖然不再有 32 位元版本,但運作 32 位元的應用程式並不會有任何問題),當然最新一代的雲端作業系統 Windows Server 2012 R2 也不例外。因此,請選擇具備更多「定址空間(Address Space)」的 64 位元處理器,以及大容量的 L2/L3「快取(Last Level Cache)」,甚至最新一代的處理器如 Intel Haswell 支援 L4 快取,相較於追求處理器的「時脈(Clock Rate)」速度上,更應該著重在處理器「核心(Cores)」數量方面。

此外,為了因應虛擬化平台的工作負載,請至少選擇支援第一代硬體輔助虛擬化技術的中央處理器如 Intel-VTxAMD-V,當然若支援第二代硬體輔助虛擬化技術,或稱第二層位址轉譯 SLAT(Second Level Address Translation)技術,例如,Intel EPT(Extended Page Tables)或 AMD NPT(Nested Page Tables)更好,能夠有效降低因為虛擬化所造成的工作負載。

您可以透過內建的 SystemInfo.exe 指令,或者下載不需安裝的 Windows Sysinternals 工具Coreinfo.exe,便可以確認實體伺服器處理器所支援的虛擬化技術世代。

圖 3、透過 Coreinfo.exe 工具確認 CPU 處理器所支援的虛擬化技術世代



記憶體(Memory)

愈多愈好!! 當實體伺服器記憶體空間不足時,便會迫使 Windows Server 採用硬碟空間產生「分頁檔案(Paging Files)」,以補足不夠的記憶體空間,直接影響並降低了實體伺服器的運作效能。若因預算因素在短期內無法採購足夠的記憶體時,建議應該依如下準則來優化分頁檔案的運作效率:

  • 將分頁檔案產生在隔離的硬碟環境,也就是不要跟作業系統或應用程式共用同一個硬碟空間。
  • 雖然將分頁檔案產生在具備容錯機制的硬碟空間中,可能會導致比較慢的 I/O,但倘若將分頁檔案存放於「」容錯機制的硬碟空間中,雖然會獲得較快的 I/O,但當硬碟發生災難事件時可能會導致「系統崩潰(System Crash)」的情況發生。
  • 請保持分頁檔案隔離原則,不要將「多個」分頁檔案產生在同一個硬碟空間當中。


同時,應該要選擇支援 NUMA(Non-uniform memory access)架構的實體伺服器,以避免 CPU 處理器與記憶體之間的資料存取行為,因為匯流排頻寬不足的問題而產生存取瓶頸。但是,當採用支援 NUMA 架構的實體伺服器時,必須要注意實體記憶體必須平均分配,以避免 CPU 仍需跨 NUMA 節點進行記憶體空間的存取。

圖 4、NUMA Node 架構記憶體配置最佳化



硬碟(Hard Disks)

選擇好 CPU/Memory 之後另一個重要的環節就是「硬碟」,不同的硬碟種類(SATA、SAS、SSD)、轉速(7200、10,000、15,000)RPM、磁碟陣列類型(RAID10、5、6...等),都會影響整體的 IOPS(Input/Output Operations Per Second)效能表現,簡單來說 IOPS 便是總合了 Random Read/Write 以及 Sequential Read/Write 的整體表現,而這二者之前的資料讀寫行為有何不同,請參考圖 5 即可。

圖 5、Sequential 及 Random 方式資料存取示意圖

原則上,當然是購買轉速愈高且傳輸介面愈快如 SAS 介面 15,000 RPM,但事實上常常會令人陷入二難的局面,也就是如何在「效能(Performance)及容量(Capacity)」之間進行取捨,舉例來說 7,200 RPM SATA3(Serial ATA)的主流硬碟,目前在空間容量上已經可以達到 3 ~ 4 TB 空間大小,並且在價格上也通常令人感到滿意,但是在效能表現方面也就是 IOPS 數值僅大約為 75 左右。而 15,000 RPM SAS(Serial Attached SCSI)主流硬碟在容量上為 300 ~ 900 GB 空間大小,雖然採購費用是 SATA 硬碟的好幾倍並且空間也小上許多,但是 IOPS 效能數值可達 175 左右。

下列表格為目前市面上常見的硬碟其 IOPS 效能表現,你可以透過下列方法來大概進行估算,所購買的儲存裝置總體 IOPS 數值:


但是,除了硬碟的類型及轉速影響 IOPS 效能數值之外,還有不同的磁碟陣列(Redundant Array of Independent Disks,RAID)模式,也會造成不同程度的資料寫入效能「處罰(Penalty)」需要考量。因為不同模式的RAID磁碟陣列會影響到整體 IOPS 效能數值,舉例來說 建立 RAID-5、RAID-6 磁碟陣列類型時,因為要進行「同位元檢查(Parity Checking)」所以雖然整體容量空間損失較少,但是帶來的影響則是在 IOPS Write I/O Penalty 較多。


所以若採購的 1U 實體伺服器,配備了 8 顆 SAS 介面 15,000 RPM 的硬碟(單顆取 195 的 IOPS 數值),並選擇採用了 RAID 10 磁碟陣列模式,至於資料的讀取及寫入狀況則採 50% / 50% 的方式,那麼這樣的一台實體伺服器,經過下列概算公式後將會具備「1040 IOPS」的資料讀寫能力。

圖 6、IOPS 簡易估算公式

當然了,這樣的簡易估算公式只是初估,事實上並未包含其它快取機制在內,舉例來說,當磁碟陣列卡(RAID Card),在加裝了「快取 Cache(RAID Card Memory)」及「智慧型電池 BBU(Battery Backup Unit)」之後,通常便能開啟資料「寫入快取(Write Cache with BBU)」機制,這樣的機制可以有效降低先前所提到的資料寫入效能處罰影響。尤其,當寫入資料是「連續資料(Sequential)」時效果更加明顯,如圖所示便是開啟寫入快取(Write Cache with BBU)機制前後,針對隨機及連續資料所測得到資料存取 IOPS 數據。

圖 7、啟用或停用寫入快取機制後 IOPS 數值整體表現



週邊匯流排及介面卡(Peripheral Bus & Adapter)

首先,在介面卡方面請採用通過 Windows Hardware Certification 驗證流程的介面卡,同時為了避免傳輸瓶頸卡在匯流排上,請採用速度較快的「快速週邊組件互連(PCI Express,Peripheral Component Interconnect Express)」如 PCIe x8 或 x16。

此外,盡量挑選具備可減緩 Hyper-V 主機 CPU 工作負載的網路介面卡,例如,支援 RSS(Receive Side Scaling )、Large Send Offload (LSOv1, LSOv2)、TCP Checksum Offload (TCPv4, TCPv6)、MSI-X(Message-Signaled Interrupt)、VMQ(Virtual Machine Queue)...等卸載功能。

那麼介面卡該選擇單埠(Single Port)、2 埠(Dual Port)或者是 4 埠(Quad Port)? 若實體伺服器的 PCIe Slot 足夠的情況下,建議採用單埠(Single Port)的介面卡比較適合,主因是為了避免傳輸瓶頸卡在 PCIe Slot 匯流排,因為即使目前速度最快的 PCIe x16 在全雙工的情況下傳輸也只有 8Gb/s,但若在該 PCIe Slot 中插上 2 埠 10G 網路卡,可想而知當工作負載升高時,勢必會造成傳輸瓶頸卡在 PCIe Slot 匯流排的現象。



電力配置優化

企業或組織導入虛擬化平台除了將伺服器進行整併之外,另一個關鍵因素便是當時間拉長來看時整個機房的電力節省,不同的實體伺服器及相關週邊配件也會導致不同的電力損耗,舉例來說 中央處理器一般都會有所謂「散熱設計功率(Thermal Design Power,TDP)」評等,應盡量挑選 TDP 數值較低的 CPU 處理器,在記憶體方面也會因為相關技術如「錯誤檢查和糾正(Error Checking and Correcting,ECC)」等,都會影響電力損耗大小。除此之外,實體伺服器採用的硬碟種類及轉速、網路卡、風扇...等,都將影響整體的電力損耗數值。

除了實體伺服器本身的硬體功能之外,所安裝的 Windows Server 2012 R2 雲端作業系統的電源設定,也同樣會影響整體的效能及電力表現,在預設的情況下 Windows Server 2012 R2,其電源計劃為「平衡」,也就是自動在運作效能及電力損耗之間取得一個平衡點。

圖 8、Windows Server 2012 R2 預設情況下電源計劃設定值為平衡

但若您希望屆時其上運作的VM虛擬主機擁有高效能表現,那麼應該要將電源計劃調整為「高效能」,此時便會觸發啟動實體伺服器的硬體功能如 Intel Turbo Boost AMD Turbo CORE 技術,讓實體伺服器工作負載即使處於滿載情況時,效能表現仍維持最佳甚至更好,但缺點就是會消耗較多的電力。反觀若是電源計劃設定為「省電」,便會自動停用實體伺服器所支援的 Turbo 技術。


圖 9、CPU 處理器電源狀態





4、Hyper-V 主機效能調校

事實上,Hyper-V 虛擬化技術為 Windows Server 2012 R2 作業系統當中,其中一個虛擬化伺服器角色而以,當未啟用安裝此伺服器角色以前,其實在運作上跟一般的伺服器沒有二樣。但啟動此角色後便轉換成為 Type 1 Hypervisor 運作架構,也就是啟用了 Hyper-V 虛擬化技術的虛擬化平台功能,能夠同時在主機中運作多台 VM 虛擬主機,並且有效率的共享底層硬體資源,例如,中央處理器(CPU)、記憶體(Memory)、磁碟 I/O(Disk I/O)...等硬體資源。

圖 10、Hyper-V 虛擬化平台運作架構示意圖



專用的伺服器角色

你不應該在 Root Partition 也就是 Hyper-V 主機本身作業系統當中,安裝其它伺服器角色(例如,AD, DNS, DHCP...等),因為會影響到虛擬化平台本身 CPU, Memory, Disk I/O, Network Bandwidth 處理能力之外,也可能造成被攻擊面的增加(因為會額外 Listen 相關服務 Port 號),同時會增加相關安全性更新的數量及頻率(造成重新開機次數增加)。

甚至應該考慮將 Hyper-V 運作在「核心伺服器(Server Core)」模式當中,除了減少 Hyper-V Hypervisor 硬體資源的損耗,以及提升主機安全性(相較於圖形介面來說減少許多 Listen Port)之外,安全性更新數量相較於 GUI 圖形介面,更可以減少 40% ~ 60% 之多。此外,從 Windows Server 2012 開始,便可以在 GUI 圖形介面及 Server Core 模式中進行切換,現在您可以先在 GUI 圖形介面將 Hyper-V 功能設定完成後,切換成更有效率更安全的 Server Core 模式繼續運作。

圖 11、Windows Server Core 運作元件架構示意圖



CPU 效能監控

在虛擬化環境當中,不管是 Hyper-V 主機(Root Partition)或是 VM 虛擬主機(Child Partition),在開啟的工作管理員視窗中所看到的 CPU 負載數值是不準確的,你可以透過 Windows 內建的 Performance Monitor(Perfmon.exe)Logman.exe,並且配合下列相關的效能計數器項目,有效監控及診斷 Hyper-V Host 或其上運作的 VM 虛擬主機運作效能。

  • Hyper-V Hypervisor Logical Processor (*) \% Total Run Time: 邏輯處理器 Non-Idle Time 整體執行時間。
  • Hyper-V Hypervisor Logical Processor (*) \% Guest Run Time: Guest OS 佔用了 Hyper-V Host 多少的 CPU 運算時間。
  • Hyper-V Hypervisor Logical Processor (*) \% Hypervisor Run Time: Hyper-V Hypervisor 使用了多少 CPU 運算時間。
  • Hyper-V Hypervisor Root Virtual Processor (*) \ *: Root Partition 使用了多少 CPU 運算時間。
  • Hyper-V Hypervisor Virtual Processor (*) \ *: Child Partition 使用了多少 CPU 運算時間。

圖 12、新增效能計數器項目以監控 Hyper-V 或 VM 運作效能



Guest NUMA 最佳化

從 Windows Server 2012(Hyper-V 3.0)開始,便支援 Guest NUMA(或稱 Virtual NUMA)機制,當 VM 虛擬主機「啟動(Power On)」時,便能感知並運作在自動分配正確對應的實體 NUMA 節點當中,以避免 VM 虛擬主機運作在不同的 NUMA 節點,造成 VM 虛擬主機運作效能低落。

圖 13、Guest NUMA 正確感知 Host NUMA 使工作負載最佳化

然而,隨著不同工作負載(不同 vCPU 及虛擬記憶體大小)的 VM 虛擬主機啟動,有可能會導致 NUMA Node 運作不平均的情況。因此,你可以隨時採用 Perfmon 搭配「Hyper-V VM Vid Partition (*)\ NumaNodeIndex」記數器項目,或使用 PowerShell 指令「Get-Counter "\Hyper-V VM VID Partition(*)\*"」,來查詢每台 VM 虛擬主機此時所處的 NUMA Node,並且透過 Hyper-V 管理員或 WMI API(調整 NumaNodeList 中的 Msvm_VirtualSystemSettingData 屬性值),來改變 VM 虛擬主機的 NUMA Node Preference 設定。

圖 14、查看 VM 虛擬主機所使用的 Host NUMA 節點資訊



運作整合服務的 VM 虛擬主機

新一代的 Hyper-V 3.0 R2 虛擬化平台中,其 VM 虛擬主機(Guest OS)可運作全系列 Windows 作業系統(當然 EOL 產品如 Windows 2000...等除外),以及目前市場上主流的 Linux 作業系統如 RHEL/CentOS、SUSE、Ubuntu...等。

但是對於 Hyper-V 主機來說,其上運作的 VM 虛擬主機其實可區分為 Non-Enlightened Guests OSEnlightened Guests OS,對於 Hyper-V 3.0 R2 虛擬化平台來說,目前原生的 Enlightened Guests OS,為 Windows 8/8.1 Windows Server 2012/2012 R2,其它舊版則需要升級或重新安裝整合服務。

其它 Non-Enlightened Guests OS,則需要安裝「整合服務(Integration Services)」,在整合服務當中包含了 Enlightened Drivers,安裝後會為VM虛擬主機提供最佳化的虛擬裝置,相較於未安裝整合服務之前所採用的「模擬裝置(Emulated Devices)」來說,除了可以有效減少 Hyper-V 主機的 CPU 及 Disk I/O 工作負載之外,同時能提高 Guest OS 的 I/O 吞吐量(I/O Throughput)。

值得一提的部份,在舊版 Windows Server 2012(Hyper-V 3.0)虛擬化平台中,即使為 Linux 安裝整合服務將虛擬裝置最佳化並順利運作後,但是能夠有效減輕 Hyper-V 主機記憶體工作負載的機制,也就是 Guest OS 的動態記憶體(Dynamic Memory)功能卻無法運作。現在,最新一代的 Windows Server 2012 R2(Hyper-V 3.0 R2)虛擬化平台,除了動態記憶體(Dynamic Memory)可以順利運作之外,也支援其它特色功能如 Live Backup、Virtual SCSI、Hot Add、Online Resize...等。

圖 15、CentOS Linux 作業系統順利啟用動態記憶體機制



VM 虛擬主機優化調校

由於 Hyper-V 虛擬化平台其上運作數量可觀的 VM 虛擬主機,經過相關優化調校程序後,除了 VM 虛擬主機本身運作效能增加之外,對於 Hyper-V Host 整體的效能提升也很有幫助,雖然這些優化調校作業可能看似不起眼或沒感覺,但您可以想像若這些優化調校作業完成後每台 VM 虛擬主機可以提升 0.3% 效能,當一台 Hyper-V Host 運作了 50 台 VM 虛擬主機時,將可以帶來 15% 的整體效能提升,有效收到涓流點滴匯聚終成大海之效。

  • VM 虛擬主機(Guest OS)務必安裝最新版本整合服務,以便與 Hyper-V Hypervisor 形成最佳化運作模式。
  • 移除傳統網路介面卡(Emulated Network Adapter),改為採用與整合服務最佳化驅動程式的網路介面卡(Microsoft Hyper-V Specific Adapter)。
  • 移除或中斷連接未使用的媒體裝置如 SCSI 控制器、CD-ROM、COM Port、Floppy。
  • 停用 Guest OS 螢幕保護機制。
  • 停用 Guest OS 排程備份(Backup),以及磁碟重組(Defragmentation)機制。
  • 停用 Hyper-V Host 及 Guest OS 開機時,便自動開啟伺服器管理員(Server Manager)的機制,並且延長資料重新整理的間隔時間。
  • 在 Hyper-V Host 上避免持續開啟 Hyper-V 管理員視窗,因為它必須不斷更新 VM 虛擬主機相關資料(例如,動態記憶體使用數值),以及 VM 虛擬主機的運作畫面縮圖。
  • 停用 Guest OS 當中不必要的系統服務,例如,SuperFetch、Windows Search、Scheduled Defrag...等。

圖 16、為 VM 虛擬主機移除不必要的媒體裝置如 CD-ROM





5、結語

當企業或組織將測試研發或營運環境導入虛擬化平台後,除了享受虛擬化所帶來的高彈性運作益處之外,原本在實體伺服器上的長期運作穩定當然也不可失去。然而,不管是在實體伺服器特色功能的選購方面,或者是作業系統的運作及優化調校方式,都與原本未虛擬化環境上有不同之處,透過本篇文章的說明及討論,希望能為讀者帶來一些規劃及優化調校方面的概念。