作者 主題: [軟體應用]資訊基礎架構虛擬化:VMware ESX Server 3.5  (閱讀 23654 次)

0 會員 與 1 訪客 正在閱讀本文。

carejollg

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
原文章PDF下載位址,檔名是「VMware ESX Server」,檔案大小約2.18MB。(原文發表在PCDVD,轉載到此論壇,請網友指教)

◎標題:[軟體應用]資訊基礎架構虛擬化:VMware ESX Server 3.5 (2008/4/9)

◎前言:(抱歉,文章內沒有效能測試,原因是使用個人電腦建置軟體應用參考環境,而不是企業用伺服主機)
VMware ESX Server定位在中、大型資訊架構虛擬化,與(GSX)Server/Workstation著重在中、小型資訊系統或個人工作站等不同,這2類軟體所使用的虛擬化技術與管理概念也有極大的差別。開始前建議網友先具備基本的作業系統與Linux套件等管理基礎。

這篇文章的目的將簡介ESX Server應用在基礎架構虛擬化所使用的概念與技術,包括資源中心(Resource Pool)、儲存架構(Storage Architecture)、微核心(microkernel)與Hypervisor、VMFS3虛擬檔案系統、VMI 3.0等;除了基本的ESX Server安裝步驟外,文章也將簡介ESX Server的3種管理工具:VMware Infrastructure Client、VMware Infrastructure Web Access、VMware Service Console。

網友對VMware Server/Workstation應不陌生,但ESX Server則是完全不同的虛擬化系統,以下是簡略說明。ESX Server採用Native Virtualization(VMware稱為Transparent Para-virtualization)技術,在實際應用上注重穩定、資訊安全、擴充性,並將底層的伺服器統合成叢集(Clusters),再抽象化、集合成可分割運算資源的Resource Pool;虛擬機器則由這個資源中心取得運算資源,可以理解ESX Server在用途上將改變資訊基礎架構的伺服器服務與管理方式;相對地Server/Workstation則以相容性、容易操作、彈性(泛用性)為主,負載虛擬機器數量較低,但適用於各種市面常見的作業系統,以致於常用於軟體工程師所需的測試工作站。

VMware已經將ESX Server納入VMware Infrastructure虛擬化解決方案,並成為套裝產品之一。顧名思義,這是在資訊基礎架構上應用虛擬化,再衍生出伺服器集中管理、備份、災難復原等多種用途。基礎架構虛擬化與傳統上一個服務配置一部伺服器的用法不同,而且ESX Server的Hypervisor虛擬層架設在基礎硬體(如叢集伺服器、GbE網路、SAN儲存系統等)上,使得底層的資訊基礎設施變得抽象化,使資訊人員得重新學習管理虛擬伺服器的相關技能。文章中將簡略揭露其原因。

◎軟體、硬體需求

硬體:準備2部主機,分別是伺服器與遠端管理主機。伺服器安裝VMware ESX Server 3.5系統,遠端管理主機則安裝Virtual Infrastructure Client/Web Access與Server Console(提供Service Console服務)所需的相關工具。硬體需求請參考下一節文章中的架構圖。
軟體:VMware ESX Server 3.5(官方網站下載),只須下載第一個檔案,其餘檔案用於更大型的架構。下載後是一個ISO檔,再燒錄成可開機光碟即可;至於Virtual Infrastructure Client/Web Access與Server Console則由ESX Server部署即可,不用額外下載軟體。

◎硬體配置(VMware ESX Server 3.5參考架構)

VMware ESX Server最低要求的基本架構需要兩部主機,這裡所使用的架構範例與之前文章中提到的Virtual Iron參考架構相同,除了VMware ESX Server 3.5伺服器與遠端管理電腦,更複雜的架構可以增加VirtualCenter Database、VirtualCenter Server與SAN儲存裝置等獨立伺服器,只是所需硬體已超過我的主機數量,暫時不在此文的討論範圍。

各主機硬體配置與網路設定請參考下圖:

ESX Server Reference_1.tif

伺服器在安裝前,建議備份硬碟資料,安裝時磁碟會被格式化為ext3/VMFS3檔案格式,後者是ESX Server專屬的檔案格式。至於處理器的需求,VMware官方網站的新功能新功能並沒有列出與AMD Pacifica/Intel VT-x相關的項目,但技術文件中提到3.5版已支援AMD NPT指令集(記憶體分頁虛擬化)。網友應該可以使用未內建Pacifica/VT-x指令集的主機做為伺服器,但我並未測試沒有硬體輔助指令下的安裝方案,請其他網友分享這方面的經驗。

範例中使用的伺服器,其處理器有內建AMD Pacifica指令並在BIOS啟動,安裝時沒有發生問題。技嘉MA78GM-S2H主機板可安裝ESX Server 3.5,但不支援內建的IDE/SATA控制晶片,所以IDE/SATA硬碟無法辨識,改使用VMware建議的外加SCSI儲存裝置;另一點則是ESX Server也不支援主機板內建的網路控制晶片,所以額外加上Intel PRO/1000 MT的GbE獨立網路卡,否則遠端管理主機無法透過區域網路連接伺服器。

遠端管理主機只要一般安裝Windows XP的個人電腦或筆記型電腦即可,圖示也說明兩部主機透過10/100 Ethernet Switch連接;如果遠端管理主機使用Linux套件,須改用Web Access的方式連接伺服器。

◎VMware ESX Server 3.5安裝步驟

以下是VMware ESX Server 3.5安裝畫面,只要硬體沒有相容性問題,安裝過程會自動執行。
這些步驟與安裝Virtual Iron、Citrix XenServer、甚至Linux套件等相似,熟悉以上軟體的網友可以跳過這一小節。
因為安裝過程缺少截圖的工具,以下圖檔來自於TrainSignal安裝3.0版教學圖檔,與範例所使用的3.5版大同小異。

ESX_install_1.png
(圖說)以ESX Server安裝光碟開機後的畫面。

ESX_install_2.png
(圖說)檢查安裝光碟,如果確認沒有問題,可以選擇跳過(Skip)。

ESX_install_3.png
(圖說)(略)

ESX_install_4.png
(圖說)(略)

ESX_install_5.png
(圖說)選擇鍵盤。

ESX_install_6.png
(圖說)選擇滑鼠。

ESX_install_7.png
(圖說)版權宣告。

ESX_install_8.png
(圖說)圖中列出可使用的儲存裝置,由於範例的伺服器僅辨識出SCSI卡上的硬碟,所以安裝時只能選擇SCSI硬碟(範例中為36GB)。
磁區分割方式選擇建議值(Recommanded),系統會分割出必要的磁區,待熟練後可改用進階方式(Advanced)。

ESX_install_9.png
(圖說)選擇建議值分割磁碟的結果。圖中所列都是必要的磁區,在進階方式分割時可以參考。

以下是範例所使用36GB SCSI硬碟分割值:

/boot      (101 MB)
/         (4996 MB)
vmfs3    (27266 MB)
swap       (541 MB)
/var/log  (1992 MB)
vmkcore    (101 MB)

除了開機磁區(/boot)、根目錄(/)、swap與log磁區外,vmkcore是用於系統維護與除錯用的;剩下的磁碟空間將會分割成VMFS3的檔案格式,用於儲存虛擬機器的檔案,數字3代表第3版的VMFS。
若使用進階方式分割,其他自訂的分割區,例如:/home、/tmp、VFAT(用於映射到RAW Disks)

ESX_install_10.png
(圖說)安裝MBR(開機管理員)

ESX_install_11.png
(圖說)網路設定,以下是範例所使用的設定:

IP Address:192.168.10.10
Subnet Mask:255.255.255.0
Gateway:192.168.10.255
Primary DNS:192.168.10.1

ESX_install_12.png
(圖說)選擇時區。

ESX_install_13.png
(圖說)這裡請輸入Root管理員密碼,這是VMware Infrastructure Client所需的密碼。

ESX_install_14.png
(圖說)安裝前確認所有設定值,接下來將開始安裝。

ESX_install_15.png
(圖說)安裝結束。

ESX_install_16.png
(圖說)伺服器會重新啟動,開機完成後的畫面如圖。圖中顯示伺服器所在的名稱與IP位置。

範例則是:http://192.168.10.10

圖中下方說明按下「Alt+F1」可以進入伺服器本機的管理終端機(Server Console)。

ESX_install_17.png
(圖說)按下「Alt+F1」進入Server Console終端機畫面。這個服務是由VMware ESX Server中的Service Console模組所提供的,而這個模組則是由Red Hat Linux所修改而成,表示終端機的指令與Red Hat Linux是相通的,Script指令也相同。

◎遠端管理主機(VMware Infrastructure Client,以下簡稱VI Client)安裝與設定

VI_Client_1.png
(圖說)開啟遠端管理電腦的瀏覽器,在網址列上鍵入伺服器位址:http://192.168.10.10
出現圖中畫面,接下來點選「Download VMware Infrastructure Client」,瀏覽器會下載「VMware-viclient.exe」的安裝檔案。

VI_Client_2.png
(圖說)下載後的「VMware-viclient.exe」安裝檔案,容量約為50.1MB。

VI_Client_3.png
(圖說)點選「VMware-viclient.exe」兩下後開始安裝VI Client。安裝過程很容易,不需要特別說明。

VI_Client_4.png
(圖說)(略)

VI_Client_5.png
(圖說)這裡請任意填寫。

VI_Client_6.png
(圖說)(略)

VI_Client_7.png
(圖說)(略)

VI_Client_8.png
(圖說)安裝完成後,桌面上會出現「VMware Infrastructure Client」的捷徑圖示,點選後進入管理介面。

VI_Client_9.png
(圖說)VMware Infrastructure Client的登入認證畫面,輸入VMware ESX Server安裝時設定的IP、管理員帳號(root)與密碼。

VI_Client_11.png
(圖說)VI Client的首頁。圖中左側的樹狀結構,請參考後續說明,其下已建立「Linux」、「Windows」等DataCenter,以及2部虛擬機器。
最上層代表Resource Pool的名稱,內定值是:「localhost.localdomain」
如果有網域控制站,請改用完整的網域名稱。
每一個樹狀結構的詳細資訊,會顯示在右側的頁籤面中。以下僅舉例簡介頁籤內容。

VI_Client_12.png
(圖說)在右側頁籤上點選「Summary」,顯示出伺服器的處理器、主記憶體、儲存裝置與網路等各種可用資源。

VI_Client_12_1.png
(圖說)點選「Virtual Machines」,列出目前在Resource Pool下所有虛擬機器與其狀態。
圖中的uBuntu_Server(含Desktop套件)與Vista(32位元)都只含作業系統,未安裝任何應用程式,網友可以比較一下處理器與記憶體的使用率。

VI_Client_13.png
(圖說)點選「Performance」頁籤,可以看到Resource Pool所屬的CPU、Disk、Management Agent、Memory、Network、System等使用率。

VI_Client_14.png
(圖說)點選「Configuration」頁籤,列出ESX Server的組態設定項目。圖中是目前Resource Pool的虛擬網路組態。

VI_Client_15.png
(圖說)(接上圖)點選「Configuration」→「Software」→「Security Profile」,進入ESX Server內建的防火牆選項設定。

VI_Client_16.png
(圖說)(接上圖)點選右上角的「Properties」,勾選啟動防火牆項目。

VI_Client_17.png
(圖說)虛擬處理器的使用率,這是管理員監控虛擬機器資源與狀態的報表。

VI_Client_18.png
(圖說)虛擬磁碟的使用率。

VI_Client_19.png
(圖說)虛擬記憶體的使用率。

VI_Client_20.png
(圖說)虛擬網路的使用率。

◎建立虛擬機器

VM_install_0.png
(圖說)點選樹狀目錄上的「localhost.localdomain」,按下滑鼠右鍵,在接下來的選單上選擇「New Virtual Machine」,建立虛擬機器。這個過程與VMware Server/Workstation都相同,熟悉這些步驟的網友可略過。

VM_install_1.png
(圖說)虛擬機器名稱,在ESX Server中建議使用有意義的名稱,容易辨識出Guest OS的種類或版本等,例如「uBuntu_Server」。此做法的概念與Virtual Iron相同,後續在各個VirtualCenter間遷移虛擬機器時,不致於混亂。

VM_install_2.png
(圖說)圖中顯示虛擬機器的儲存中心位置。在ESX Server中將儲存中心稱為Datastore,不論後端是本機的SCSI硬碟或SAN儲存系統,都被抽象化後改以名稱使用。圖右的[storage1]是SCSI硬碟的VMFS3分割區空間,也就是本機SCSI硬碟當成儲存中心。

如果安裝ESX Server時有辨識出IDE/SATA裝置,但這裡卻沒有顯示可用的儲存中心,這是因為VMware使用專屬的VMFS3檔案格式,對儲存裝置有特別的要求,細節可以參考「vi3_30_20_installation_guide.pdf」這份文件。建議最低需求為SCSI裝置,同時安裝ESX Server與虛擬機器。文件中特別說明IDE/SATA雖然可以辨識,但不能用來當成虛擬磁碟的儲存中心,即使在系統上將SATA模擬成IDE或SCSI硬碟也不行。

VM_install_3.png
(圖說)圖中是ESX Server所支援虛擬機器的Linux套件清單,較新的Red Hat Enterprise Linux 5、SuSE Linux Enterprise Server 10 SP2都在名單內;特別的是64位元的Linux套件,但處理器也必須有64位元與虛擬化指令集,才能安裝64位元虛擬機器。

VM_install_4.png
(圖說)圖中是VMware ESX Server所支援虛擬機器的Windows版本清單,除了Windows Vista與Server 2008都已經列入之外,64位元的Windows也在名單上,安裝條件與Linux相同。

圖中可以看到Windows NT 4以前的舊版本已不在支援的項目,所以使用Windows 98/ME等系統虛擬化得改用其他產品。

VM_install_5.png
(圖說)因為伺服器主機使用雙核心的AMD處理器,所以虛擬機器最多也只能有2顆虛擬處理器(vCPU)。

VM_install_6.png
(圖說)虛擬機器主記憶體容量設定。VMware ESX Server允許記憶體「over-commitment」;例如實體記憶體共2GB,但可以安裝4部虛擬主機,每部配置1GB、一共4GB的虛擬記憶體。
3.5版也可支援AMD Nested Page Tables(NPT)的記憶體分頁虛擬化指令。

VM_install_7.png
(圖說)設定虛擬網路卡,每部虛擬機器最多可安裝4張虛擬網路卡。

VM_install_8.png
(圖說)I/O控制卡選項。如果安裝虛擬機器後卻無法啟動或找不到虛擬磁碟,這裡是可能的問題來源之一,將LSI Logic改成BusLogic,或者改用相反的設定。

VM_install_9.png
(圖說)設定虛擬磁碟。如果後端儲存裝置是使用SAN儲存系統,這裡可以透過「Raw Device Mapping」將磁區掛載到ESX Server上。

VM_install_10.png
(圖說)虛擬磁碟容量與儲存位置。
如果有安裝另一部VirtualCenter Server,可以選擇「Specify a datastore」,將虛擬磁碟儲存到後端的Datastore。範例中僅使用單機硬碟,所以選擇第一項。

VM_install_12.png
(圖說)虛擬磁碟進階設定,勾選下方的「Mode」,可以選擇關機後不儲存虛擬磁碟的任何更動,就像學校電腦教室常用的時光還原功能一樣。

VM_install_13.png
(圖說)設定完成,這裡列出虛擬機器所有資源。

VM_install_14.png
(圖說)下方的「Add」、「Remove」可以新增或刪除特定裝置。建議刪除不用的序列埠、串列埠、軟碟機、音效裝置等。
如果選擇使用實體光碟機開機,請記得在「New CD/DVD」勾選「connect at power on」。

VM_install_15.png
(圖說)在「Options」頁籤上,可以看到「Para-virtualization」、「Virtualized MMU」、「Swapfile Location」等比較特別的設定。
Para-virtualization僅支援kernel 2.6.21以上的Linux套件,如果作業系統本身不支援這項功能,啟用後不會有任何效果。啟用後Guest OS可以透過VMI(Virtual Machine Interface)與VMM溝通,降低指令轉譯的效率損耗。

VM_install_16.png
(圖說)記憶體分頁虛擬化的設定,如果使用內建NPT指令集的AMD處理器,可以在此設定ESX Server的Hypervisor是否應用這些指令,降低虛擬機器切換的效率損耗。

VM_install_17.png
(圖說)完成後會在樹狀目錄下出現虛擬機器的名稱。

VM_install_18.png
(圖說)虛擬機器的螢幕畫面在頁籤列的「console」。

◎VMware Infrastructure Web Access

Web_Access_0.png
(圖說)VMware ESX Server另外提供Web Access的虛擬機器管理方式,與VI Client相比,功能較為簡潔,只提供虛擬機器所需的基本管理功能,並使用瀏覽器即可。
如果遠端管理主機是Linux,只能選擇Web Access方式,因為VI Client僅支援Windows。
點選「Log in to Web Access」。

Web_Access_1.png
(圖說)認證畫面。

Web_Access_2.png
(圖說)FireFox瀏覽器安裝Plug-in的提示,選擇「Install Plug-in」。

Web_Access_3.png
(圖說)圖中是Web Access的畫面,只看到虛擬機器相關的管理項目,Resource Pool相關的設定就省略,或透過VirtualCenter Server整合,再透過VI Client管理。

Web Access限制只能連接一部ESX Server,所以樹狀目錄最上層的是ESX Server單一主機的名稱,下一階是這部伺服器內部擁有的虛擬機器。我們可以把Web Access看成用來管理ESX Server群中的單一部虛擬機器工作站,有點像是VMware的 Workstation版。

◎VirtualCenter Database遠端管理

Web_Access_8.png
(圖說)在VI Client的瀏覽器畫面,點選「Browse datastores in this host's inventory」,可以用於管理VirtualCenter Database中的虛擬磁碟檔案(Database本身沒有遠端管理介面,須透過VirtualCenter Server)。
由於範例中沒有獨立的VirtualCenter Server,所以將ESX Server本機當成Datastore。

Web_Access_9.png
(圖說)因為範例所使用的參考架構不包括獨立的VirtualCenter Server與Datastore,所以接下來看到的是本機的儲存中心,名稱是「storage1」。

Web_Access_10.png
(圖說)這個儲存中心內建立2個VirtualCenter,分別命名為「Linux」與「Windows」。Linux下有一部名為「uBuntu_Server」的虛擬機器,Windows下則有一部「Vista_x86」虛擬機器。

Web_Access_11.png
(圖說)點選「uBuntu_Server」後,可以看到所有虛擬機器檔案。
請記得「storage1」這個儲存中心整個是使用VMFS3的檔案格式,ESX Server將.vmdk的虛擬磁碟儲存在這個中心下。

◎從樹狀目錄探討虛擬層的抽象化管理

Tree_0.tif
(圖說)如果沒有額外安裝VirtualCenter Server,並使用ESX Server本機當成Datastore,則圖中右上角的VI Client工具列上只有2個圖示。

Tree_1.tif
(圖說)如果獨立安裝VirtualCenter Server/Datastore,以及SAN儲存裝置,則VI Client工具列上會增加支援功能的按鈕(圖中右上角)。
圖中所要表現的是從VI Client看到虛擬機器時,中間所經過的基礎架構拓僕,在遠端管理介面上所看到的階層關係,則顯示在下圖中。
圖中未納入儲存裝置的抽象化示意圖(請看後續文章)。

Tree_2.tif
(圖說)圖中代表VI Client中樹狀目錄的示意圖,與上圖的實際架構比較,得知各階層的關係。最上層的「Hosts & Clusters」代表Resource Pool;次一階的「DataCenter_x」則是將Resource Pool切割而成的(請參考後續文章);再次一階的「ESX_Server_x」表示ESX Server叢集群中的單機伺服器;最後一階的「VM_x」則是ESX Server中的虛擬機器。
這些階層設定很彈性,可以依實際架構與管理員技能不同而修改,不一定與實際主機有著一對一的對應,真實的設定其實已經被抽象化。因此,設定後可以再更動,例如VM在各個ESX Server間遷移,ESX Server在各個DataCenter間遷移等,都只要滑鼠拖拉樹狀目錄的圖示就可以完成。隨意更動很容易混淆虛擬機器在各階之間的關係,所以文章開頭提到虛擬機器命名建議採用容易辨識的名稱,同理ESX Server與DataCenter也是。上圖只是舉例,但沒有特別命名。

Topology.png
(圖說)通常在備份時會需要釐清虛擬機器在拓樸中的位置,倘若還是分不清楚,工具列圖中可看到VI Client內建的「Maps」按鈕,軟體會自動繪出拓樸圖,而且可選擇拓樸關係:「Host to VM」、「Host to Network」、「Host to Datastore」、「VM to Network」、「VM to Datastore」。由於我手邊的硬體不足以安裝所有伺服器,僅能藉由公開資料解說。
圖片來源:「exchange_esg_validation_report.pdf」

Resource Pool.tif
(圖說)ESX Server中將伺服器運算資源以類似叢集的技術,統合成一個Resource Pool,再從中分割成數個運算單位(含處理器與記憶體),配置成DataCenter或虛擬機器群。圖中可以看到Resource Pool的CPU與Memory是所有ESX Server的總合。
Resource Pool可看成是一群伺服器主機的抽象化集合,虛擬機器不一定被限制在特定的ESX Server硬體中,每個DataCenter或每部虛擬機器運算資源是由ESX Server主機群所共同提供並切割而形成的。圖中尚未包括後端的儲存裝置,這部份解說請看下圖。

Datastore.tif
(圖說)圖中展現出虛擬磁碟(.vmdk)與儲存中心(Datastore)的關係,以及連接實體儲存裝置的整體架構。
從示意圖可以看到DataCenter(指虛擬機器群)與Datastore(指虛擬磁碟群)之間並非一對一的關係,這種關聯賦予DataCenter更多組合多部虛擬機器的彈性,使各部虛擬機器可以在多個DataCenter之間動態遷移;此外,VMFS3檔案系統則將實體儲存裝置抽象化,表示Datastore應用上不必了解後端到底是iSCSI SAN或FC SAN等硬體相異性,使Datastore可以在各種儲存裝置上彈性移動,包括內部的虛擬機器。
對照示意圖的解說,再回到文章中安裝虛擬機器的步驟,可以理解為何要先選擇虛擬磁碟儲存位置所在的Datastore,接下來才設定虛擬磁碟檔案與容量。

VMFS3.tif
(圖說)ESX Server的儲存架構比較複雜。虛擬磁碟(.vmdk)儲存在ESX Server專屬的VMFS3格式檔案中,而VMFS3對應到實體的儲存裝置前,還經過儲存虛擬化這個業界標準,形成2種不同的虛擬化介面與抽象化,在架構上是額外負擔。不過,其優點是虛擬機器、ESX Server或DataCenter可以彈性遷移,這是VMFS3檔案的提供的性能。

◎結論:文章所使用的範例只是最簡單的架構,在機房實作前則要仔細規畫,網友可以發覺不論是VMware ESX Server或Virtual Iron,所有硬體設備在虛擬化後都隱藏在Hypervisor這個虛擬層之下;硬體與軟體彼此間抽離後,基礎架構顯得非常抽象,與傳統伺服器服務與主機間一對一對應的管理方式顯著不同,而在資訊安全、備份、災難復原或性能調校等也採用虛擬化專屬的工具,對虛擬化新手管理員來說,得先學習如何跨過這個門檻。

我們很幸運地使用一般零售市場的個人電腦零組件,就可以安裝VMware ESX Server虛擬化軟體,在更早之前這是難以想像的事。不過,文章只是個開始,尚未談到虛擬化前如何規畫、ESX Server如何組成Resource Pool、以及伺服器如何平均地分配在各部ESX Server上,後續更重要的性能調校、偵錯與除錯等,這些都是虛擬化的關鍵之一。很可惜目前硬體不足以展示這些技術,或者網友能分享相關經驗。

至少我們已經有簡單的學習平臺,不必停留在看文章、憑空想像基礎架構虛擬化的模樣。接下來,除了官方網站的技術文件(白皮書實用性不高)、相關學術研究,建議網友參考作業系統書籍,以及Wiki英文網站上關於虛擬化的文章,特別是文末所列的參考資料等,我們在偵錯、除錯時會需要這些文件。

在這裡提醒網友,就目前來說,不是所有伺服器服務都適合x86虛擬化,因為許多技術還在發展與驗證中,這方面訊息建議參考Oracle官方網站的資料,其產品幾乎對x86虛擬化都是極大的挑戰(吃處理器與記憶體資源)。

◎補充:Microkernel的效率與安全性

VMware ESX Server使用自行開發的「vmkernerl」做為Hypervisor,負責處理器指令運算與記憶體管理等核心作業,也就是執行特權指令。
在作業系統分類上,vmkernerl是一種「microkernel」,可以看成是一種簡化的作業系統核心,也是許多虛擬化軟體常用來當成Hypervisor。接下來所要探討的是ESX Server採用microkernel的原因,同樣的理論也適用於採用microkernel做為Hypervisor的虛擬化軟體,例如XenServer、Virtual Iron等。

Microkernel.tif

一般作業系統核心區分為microkernel與monolithic kernel(請參考比較圖)。microkernel只包括處理器所需的執行緒管理(thread management)、記憶體管理與內行程通訊(Inter-process communication,IPC)等,真正作業系統所需的功能如驅動程式(Device Driver)或檔案管理(File Management)等,則由User-mode Servers提供相關服務,其IPC便是用於溝通這些服務。

一般常用的Linux、Windows則是hybrid kernel,混合microkernel與monolithic kernel兩種核心架構。作業系統所需的行程管理、記憶體管理、檔案管理與裝置驅動程式等都封裝在核心內,屬於Privileged-mode,只有應用程式屬於User-mode。

相對於monolithic kernel或hybrid kernel,microkernel較為穩定,當某一個提供服務的Server當機了,不至於造成核心也崩潰(crash),或影響其他Server的服務;而且核心僅包含最少的特權指令,所以相對地安全。不過,microkernel在效率上比monolithic/hybrid kernel略差,因為後者的特權指令都在核心內溝通(同一個kernel-mode),但microkernel卻透過IPC溝通,所以核心將會經過2次的mode switches,也就是user-mode→kernel-mode→user-mode,但mode switches需要context switch,造成較低的效率。(相關技術說明請參考作業系統教科書)

雖然XenServer、Virtual Iron、VMware ESX Server等這類產品常使用microkernel做為Hypervisor,主要也是穩定與安全考量大於效率。VMware ESX Server 3.0版開始,vmkernerl是由Linux Kernel中的「initrd」行程載入的,有時會誤以為ESX只採用Linux Kernel。這個Linux Kernel用來提供ESX Server管理所需的Service Console,與vmkernel用於執行特權指令是不同的。