72 期 - VMware 虛擬化技術實作問答 (上)

網管人雜誌

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


文章目錄

Q1. x86 虛擬化技術該使用哪種才好?
Q2. 啟用 HT (Hyper Threading) 功能後,核心數量多一倍所以運作效能更好?
Q3. 採用 e1000 網卡還是 vmxnet 3 網卡好?
Q4. ESXi 是免費版所以無法使用進階功能?
Q5. 虛擬主機是否需要磁碟重組?
Q6. VMware Data Recovery 備份虛擬主機?

前言

          硬體性能逐年甚至逐月地大幅提升,與電腦剛問世時相比,已經不可同日而語。為充分利用一般使用時大部分閒置的系統資源,虛擬化技術應運而生,在該項技術領域中,最廣為採用的就是VMware。本文將就 VMware 虛擬化技術實際應用所可能面臨的各項問題提出詳細的解決對策。

          目前市面上已經開發出許多虛擬化相關技術,其中發展最成熟、產品線最為齊全的當屬VMware。雖然大多數人對於 VMware 所開發出來的技術已經很熟悉,但實作時無可避免地仍然會遭遇到一些細部難解的問題,有鑑於此,本文將分成上下集透過問答的方式來為大家解答疑惑。

Q1、x86 虛擬化技術該使用哪種才好?

Q.常常聽到 半/全 虛擬化技術、CPU 硬體輔助虛擬化,到底虛擬化技術該採用哪一種方案比較好?

A. 在說明 x86 虛擬化技術以前,應該先從 x86 架構 CPU 特權模式 (CPU Privileged Mode) 談起,由於 x86 架構一開始設計架構以 個人電腦 為定位,因此要作到硬體資源虛擬化有很大的困難,如圖 1的 x86 CPU 特權模式可以看到,在 CPU 運作架構上共有四個特權等級從 Ring 0 ~ Ring 3,其中權限最高為 Ring 0 通常為作業系統它可以與核心 (Kernel) 溝通,直接控制實體主機硬體資源的使用如 CPU、Memory、Device I/O,而 Ring 1/Ring 2 很少使用到通常為週邊裝置的驅動程式,最後則是使用者端所碰觸的應用程式是處於 Ring 3 特權模式。


圖1、Privilege rings for the x86 available in protected mode

          虛擬化技術則是在 CPU 架構中插入 Hypervisor 來管理硬體資源,Hypervisor為一介於軟體與韌體中一層極小的程式碼可以提供動態的硬體資源配置及彈性設定和管理虛擬資源,並且由 VMM (Virtuall Machine Monitor) 來取帶本來由作業系統所掌管的 Ring 0特權模式,而原來的作業系統則降一級成為 Ring 1,但是某些作業系統中某些指令必須在 Ring 0 特權模式才可正常執行,因此便衍生出 半/全 虛擬化技術 (Para / Full Virtualization),Intel 稱之為 Software-Only Virtualization,來解決特殊指令無法順利執行的問題。

半虛擬化技術 (Para Virtualization): 必須修改作業系統核心來植入 Hypercall,使得作業系統不用因為虛擬化而將 CPU 特權等級被調降到 Ring 1 (保持在 Ring 0),並且透過 Hypercall 來存取硬體資源。
  • 優點: 此虛擬化方式對於硬體資源消耗相對較少。
  • 缺點: 因為必須修改作業系統核心,因此可於半虛擬化平台上運作的作業系統種類較少。


全虛擬化技術 (Full Virtualization):以 VMware 技術來說為採用二進位轉譯 (Binary Translation) 技術達成,將因為虛擬化而降級的作業系統 (Ring 1特權模式) 存取硬體資源時,由 VMM 將作業系統發出的 CPU 指令透過二進位轉譯技術進行轉換進而順利存取硬體資源,簡言之作業系統並不知道自已被調降到 Ring 1 特權模式中。
  • 優點: 不需要修改作業系統核心,因此可運作大部份的作業系統種類。
  • 缺點: 透過二進位轉譯會消耗較多的硬體資源。

圖2、oftware-Only Virtualization

CPU 硬體輔助虛擬化 (Hardware Assisted Virtualization): 因為軟體架構虛擬化技術各有其優缺點,因此 CPU 大廠 Intel / AMD 決定從 x86 CPU 架構著手來改善 x86 虛擬化門檻,分別提出了 Intel-VT (Vanderpool) 及 AMD-V (Pacifica) 虛擬化技術,該技術簡單來說便是將原有的 CPU 特權模式分為二個等級,原先的 Ring 0 ~ Ring 3 稱為 Non-Root Mode,新增 Ring -1 稱為 Root Mode。

          如此一來 VMM 便使用 Ring -1 而作業系統則維持原來的 Ring 0,因此使用了 CPU 硬體輔助虛擬化之後,半虛擬化技術不需要事先修改作業系統核心來符合運作架構,而全虛擬化技術也不用作二進位轉譯,並且採用了 CPU 硬體輔助虛擬化之後二者不論在運作效能或硬體資源消耗上其實相差無幾

圖3、Intel 虛擬化技術的演進

圖4、採用 Intel VT-x 虛擬化技術前後架構上的改變

Q2、啟用HT (Hyper Threading) 功能後,核心數量多一倍所以運作效能更好?

Q.因為開啟主機上的 HT (Hyper Threading) 技術後核心數量會多一倍,因此運作效能一定表現更好?

A. 虛擬主機 (VM,Virtual Machine) 的 CPU 稱之為 vCPU,當虛擬主機需要 CPU 運算資源的時候,此時 VMkernel 會將此虛擬主機需要的運算資源對應 (Mapping) 到實體伺服器的 CPU 核心運算 HEC (Hardware Execution Context) 能力以使虛擬主機得以進行運算,HEC 簡單來說就是實體伺服器的 CPU 核心數 (Cores)。

          所以如圖 5 所示當虛擬主機若配有 1 vCPU 則需要運算資源時,只要 VMkernel 對應到實體主機上其中 1個 HEC 就可以執行運算,若虛擬主機配有 2 vCPU 則需要運算資源時必須要對應到2個 HEC 才能運算,若 4 vCPU 則要對應 4 個 HEC 才能運算,所以虛擬主機上配置的 vCPU 數量愈多雖然可以達成平行運作的優點,但相對的實體主機上的核心數也要同時能對應才行。

圖片來源: VMware 官方文件 – Resource Monitoring
圖5、 虛擬主機 vCPU 與實體伺服器 HEC 對應

          當實體伺服器開啟 HT (Hyper Threading) 功能後,一個實體 CPU 核心將具有二個邏輯處理單元,如圖 6 所示您可以看到當 2 CPU Socket、2 CPU Cores 的實體伺服器開啟 HT 功能之後,核心運算能力 HEC 從 4 個提升為 8 個,但是眾所周知開啟 HT 功能後的邏輯處理單元必須要作業系統及應用程式支援的前提下才能提高運算效能 (提升約 1.2 ~ 1.5 倍),倘若在不支援的情況下運算效能反而比本來還低,雖然 VMkernel 在對應 vCPU 至 HEC 運算能力時會盡量不對應到同一個實體核心 (Cores) 上,但是當系統繁忙時且虛擬主機要一次對應多個 vCPU 時就可能發生對應到同一個 Cores上邏輯的 HEC 上的狀況,造成 vCPU 雖然有對應到 HEC 但還是沒有實際運算能力,因此建議應該要關閉實體伺服器 HT 功能。

圖片來源: VMware 官方文件 – Resource Monitoring
圖6、 實體伺服器開啟 HT 功能後 vCPU 與 HEC 的對應

Q3、採用 e1000 網卡還是 vmxnet 3 網卡好?

Q.虛擬主機應該要採用 Intel e1000 網卡,還是 VMware 第三代 vmxnet3 網卡,在網路封包吞吐量上哪一種比較好?

A. E1000 網卡為模擬 Intel e1000 的網卡驅動程式,通常虛擬主機在安裝 VMware Tools 情況下時才會採用此網卡,建議應該為虛擬主機安裝 VMware Tools 並採用 VMware 第三代 vmxnet3 網卡才比較好,下列表格舉例 E1000 網卡及 vmxnet3 在進階網路功能上的支援程度。


          事實上,安裝好虛擬主機後首要應該就是安裝 VMware Tools 才是,除了可以使用 vmxnet3 及進階網路功能之外,許多人對於 VMware Tools 有些功能上的誤解,常常認為安裝 VMware Tools 不過就是使虛擬主機的滑鼠不會被咬住或者是虛擬主機與虛擬化平台進行時間校對而以,這樣只能說小看了 VMware Tools 的功用了。

          當虛擬主機安裝 VMware Tools 之後,會提供許多進階功能使得虛擬化平台在調校硬體資源給虛擬主機時能夠更緊密的結合,以下列舉部份 VMware Tools 所提供的進階功能:
  • 虛擬裝置驅動 (Device Drivers): 提供給虛擬主機週邊裝置最佳化後的驅動程式,如 SVGA Display Driver。
  • 虛擬主機心跳偵測 (Virtual Machine Heartbeat): 若有導入 VMware HA 進階功能時,vCenter Server 就是藉由 VMware Tools 來偵測虛擬主機的心跳 (Heartbeat) 是否正確運作,以便判斷是否該將虛擬主機移轉至其它台 ESX/ESXi Host。
  • 提升滑鼠效能 (Improved Mouse): 在 VM Console 操作虛擬主機時,滑鼠移動時很順暢 (不會卡卡的) 並且不須從 VM Console 中使用組合鍵手動釋放滑鼠指標。
  • 記憶體管理 (Memory Management): ESX/ESXi Host 對於運作於其上的虛擬主機其記憶體管理機制,例如 Memory Ballooning 機制的觸發也是要靠 VMware Tools 來進行,以便實體機 Host 記憶體不足時,虛擬主機能依靠 Memory Ballooning 機制自行建立 Page File 或 SWAP 以便撐過硬體資源不足的過渡期。
  • 檔案系統暫停 (Quiescing a Guest File System): ESX/ESXi Host 藉由此機制來為虛擬主機建立快照 (Snapshot)。
  • 時間同步校對 (Time Synchronization): 可以直接讓虛擬主機與 ESX/ESXi Host 進行系統時間同步校對,若虛擬主機為 Windows 網域成員會與 Windows AD 伺服器進行同步校對的話,則建議擇其一即可。
  • 正常關機 (Gracefully Shutdown): 當按下 VM Console 的關機按鈕 (紅色四方形圖示),則虛擬主機會執行正常程序進行關機。


Q4、ESXi 是免費版所以無法使用進階功能?

Q.聽說 vSphere ESXi 是免費版,所以無法使用 Linux 相關指令,並且進階功能如 vMotion、DRS、HA、FT 都無法運作?

A. 在 VMware vSphere 4.x 版本中分別有 ESX 及 ESXi 版本,而虛擬化平台的進階功能是採用以軟體授權序號的方式來進行決定的,舉例來說 在 vSphere 4.0 版本若要具有 HA 進階功能則您必須要使用至少 Essentials Plus 授權才行,若是需要大量佈署虛擬化平台的設定 Host Profiles 則必須使用 Enterprise Plus 授權才行,輸入軟體授權序號後您在 vSphere Client 的「Configuration」頁籤 Software 區塊中的「Licensed Features」項目中便可以看到此序號所具備的特色功能列表「Product Features」,因此我們可以知道 ESX/ESXi Host 進階功能是由「軟體授權序號」來決定,而非採用 ESX 或 ESXi 平台來決定,圖 7所示為 vSphere ESXi 4.1 採用免費授權序號後的功能列表。

圖7、VMware vSphere ESXi 4.1 免費版本授權資訊

          那麼該選擇 ESX 還是 ESXi 虛擬化平台呢? 在 ESX 平台架構中有個虛擬化核心被稱為 COS (Service Console),使用者登入 COS 後可以對 ESX 虛擬化平台進行相關操作及管理,VMware Agent 也安裝於 COS 中,COS 它是基於 RedHat 企業版 RHEL (Kernel 2.6.x / RHEL 5.2) 所開發改寫而成,所以許多在 Linux 作業系統中可以執行的指令在 ESX 平台中也可以執行,但是它畢竟是一個作業系統因此也會佔用及消耗 ESX Host 較多的硬體資源,並且也要為 Linux 作業系統進行相關的安全性更新。

圖8、VMware ESX 虛擬化平台架構

          ESXi 架構中移除了 COS (Linux 作業系統),所有的 VMware Agent 直接運作在 VMkernel 之上,由於將 COS 移除因此 ESXi Host 的硬體資源將更為豐富,同時因不需要為 Linux 作業系統進行安全性更新連帶使 ESXi Host 平台架構的整體安全性提升,並且只有通過驗證的第三方軟體套件模組 (3rd Party Modules) 才可安裝至 ESXi Host 中,也使得 ESXi Host 穩定性更加提升,但是也因為此平台移除了 COS 因此一般認知中的 Linux 指令大多無法執行,所以造成許多使用者誤以為 ESXi 是免費版的關系所致。

          事實上 VMware 官方於 VMware vSphere 4.1 發佈時便說明此為最後一版具有 ESX 平台架構的版本,因此在今年 8 月最新發佈的 VMware vSphere 5.0 版本中我們可以看到只有 ESXi 平台架構的版本而沒有 ESX 平台的版本。

圖9、VMware ESXi虛擬化平台架構

          那麼如何找到免費版虛擬化平台的相關資訊,有鑑於大多數使用者誤以為 ESXi 就是免費版,因此從 VMware vSphere 4.1 版本開始,VMware 官方將免費版的虛擬化平台稱之為「VMware vSphere Hypervisor」,表示此平台只有 Hypervisor 是免費且不具備任何進階功能,同時免費版本也無法被 vCenter Server 所納管,您可以使用 vSphere Client 進行單台管理,若希望同時管理多台免費版本 VMware vSphere Hypervisor 可以嘗試使用免費的網頁管理平台 「VMware Go」進行管理。

下列表格為針對 ESX 4.1、ESXi 4.1、ESXi 5.0 相關功能性進行比較:

Q5、虛擬主機是否需要磁碟重組?

Q.Windows 作業系統為實體機器時常常需要進行磁碟重組以加快磁碟 I/O的存取速度,那麼虛擬主機需要嗎?

A. VMware 採用的檔案系統為 VMFS (Virtual Machine File System) 此檔案系統最大二項特色如下:
  • 叢集檔案系統 (Cluster File System): 在同一個儲存資源 LUN (VMFS Volume) 上,允許多台 ESX/ESXi Host 同時進行資料存取 (讀取/寫入),類似於平行寫入的機制,因此選擇採用的儲存設備以前請先確認支援 Multi-Thread 而非 Single-Thread,否則屆時在運作上將會發生問題。
  • 磁碟鎖定 (On-Disk Locking): 雖然檔案系統可允許多台 Host 同時存取,但每一台虛擬主機同一時間只能被一台 Host 所控制,除非啟動了 vMotion 或 HA 機制,它會在啟動機制時解除虛擬主機磁碟檔案被鎖定的狀態。

          磁碟碎片 (Disk Fragmentation) 的產生原因是,資料寫入時並非為連續狀態因此造成讀取時必須增加磁碟轉速來尋找這些不連續的資料,而 VMFS 檔案系統不會發生這樣的問題其原因為:
  1. VMFS 的區塊空間 (Block Size) 通常是連續且佔用大空間,即使是不連續的區塊空間也通常相離不遠,因此對於 Disk I/O Request 的動作影響不大,因此效能不會受到影響。
  2. 虛擬主機檔案 (Virtual Disks) 通常是個非常大的單一檔案,如 ESXi 5.0 預設採用 Thick Provisioned Virtual Disks,不像實體機器是許多零散檔案的集合造成讀寫延遲 (I/O Latency) 的狀況導致效能受到影響。
  3. 當採用的是實體機的本機磁碟或許還會看到些許的磁碟碎片,若採用的是 SAN 儲存設備則因為磁碟陣列通常具有讀寫快取機制 (I/O Cache) 機制,因此幾乎不會有磁碟碎片產生。
  4. 若採用的是 Thin Provisioned 格式也不用擔心產生磁碟碎片,因為通常安裝好的相關檔案有許多檔案內容是不常變動的稱為冷區塊 (Cold Block),若同類型的虛擬主機愈多時會共用這個冷區塊,而後續資料變動後所產生的資料稱為熱區塊 (Hot Block)。

圖10、虛擬主機檔案 (黃色)、虛擬主機檔系統 (綠色)、vmdk 虛擬檔案 (紅色)、VMFS 檔案系統(藍色)

Q6、VMware Data Recovery 備份虛擬主機?

Q.能否使用 VMware 內建備份工具 Data Recovery (vDR) 來備份所有虛擬主機不管作業系統是 Windows、Linux 或其它種類?

A. VMware Data Recovery (vDR),它是 VMware 官方以 vStorage API 規範所開發出來專為 中小型企業使用的基本備份虛擬主機工具,屬於 Disk-based 的備份方式,具有簡單操作及容易佈署的特性 (因為它也是一台虛擬主機),支援 Windows VSS (Volume Shadow Copy) 備份方式,也支援簡單的重複資料刪除功能 (Data De-duplication)。

但是此備份工具有相關功能限制:
  • 備份環境中必須具備 vCenter Server 才可使用此備份工具。
  • 屬於 Disk-based 因此無法使用 File Level 或 Block Level 備份方式。
  • 每台 vDR 僅能備份 100 台虛擬主機。
  • 無法運作於 IPv6 網路環境上。
  • 僅支援備份運作 Windows 作業系統 (Windows 2000、XP、Vista、7、Server 2003、Server 2008) 的虛擬主機,不支援其它作業系統如 Linux、Solaris…等虛擬主機。
圖11、VMware Data Recovery 備份還原流程圖