XenServer是一套已在雲計算環境中通過驗證的企業級開放式服務器虛擬化解決方案,能夠將靜態、複雜的IT環境轉變爲更加動態、易於管理的虛擬數據中心,從而大大下降數據中心成本。同時,它能夠提供先進的管理功能,實現虛擬數據中心的集成和自動化,而成本遠遠低於其它解決方案。前端
XenServer易用簡單,只要優化部署作得好,運行是很是穩定的。對於中小企業來講,採用XenServer來部署虛擬化系統,性價比是十分不錯的選擇。XenServer基於Xen開發,如今已經所有開源了所有源代碼。linux
在XenServer沒有開發所有源代碼以前,XenServer的源代碼結構組成是這樣的:數據庫
這部分是Citrix本身開發的擁有全部權的閉源源代碼;後端
這部分是開放源碼,使用的是公共開發的源代碼;api
這部分是利用開放源碼,Citrix在此基礎之上開發修改的源代碼。安全
XenServer所有開源就是將紅色部分的源代碼和紫色部分的源代碼進行開源公佈。其代碼結構以下:服務器
可能行業內的工程師都知道,在Citrix尚未徹底開源XenServer以前,XenServer是有一個社區版本的,名字簡稱爲XCP。在XenServer開源以後,將會有如下的改變:網絡
XCP將會和XenServer進行合併;架構
XAPI開發將由Linux基金會的Xen項目來主持;運維
使用XCP的用戶能夠免費升級到XenServer;
可能延遲對XCP項目的更新直至XCP項目關閉。
在今天,咱們的XenServer已經開源了,那麼對於他的定位的是什麼?在服務器虛擬化領域,XenServer已經遠遠的落後於Vmware和Hyper-v了。根據XenServer.Org社區及Citrix的定義:
XenServer繼續根植於服務器虛擬化領域,爲人們提供開源、廉價、性能穩定的服務器虛擬化產品;
承載Citrix公司重量級產品XenApp及XenDesktop的主要底層託管hypervisor平臺,緊密集成一些關鍵特性和最佳實踐;
爲Citrix公司的應用交付產品NetScalerSDX提供底層的hypervisor平臺;
爲雲計算平臺CloudStack、OpenStack和SoftLayer’s CloudLayer提供底層hypervisor平臺。
若是說咱們要給XenServer的體系結構作一個等級歸類的話,XenServer 4.x和5.x版本算是第一代架構,XenServer6.0到6.2以前的版本算是第二代架構,XenServer 6.5算是第三代架構。
之因此有這樣的劃分是由於XenServer在積極的改變自身的架構和性能,爲了自身更好的進行模塊化的耦合,也解決以前架構的一些問題。
XenServer 6.2版本以前,其主要存在如下問題:
過於單一,難以維持簡單的語義和單元測試;
Domain 0的可伸縮性和性能存在瓶頸限制;
缺少故障控制功能
屬於SMP架構優化和開發,對於NUMA架構優化和支持很差;
Domain 0對安全的側重點不夠,安全事件頻繁;
對於第三方的擴展支持有限。
XenServer 6.5基於這些問題進行了架構的改變和解決:
內部API和模塊化:這能夠更好的系統設計架構;更容易進行單元測試,同時提升XenServer的可靠性,維護性,保障性和可調試性。
將Domain 0的一些服務解體拆分到其餘Domain服務:這能夠提升單個XenServer主機上的可擴展性,消除Domain0以前架構存在的性能瓶頸,同時更多基於安全角度設計架構,保障多租戶環境的隔離安全,同時提升可用性和服務質量。
可擴展性和靈活性:提高對第三方服務的支持力度。
如下對XenServer的體系架構解讀基於XenServer6.2及如下的版本。
如上圖所示,XenServer包含如下幾部分:
Xen Hypervisor:直接運行於硬件之上是Xen客戶操做系統與硬件資源之間的訪問接口。經過將硬件進行抽象,將相應的硬件CPU、內存的資源調度給上層的客戶機使用。目前Xen Hypervisor並不直接操做IO硬件,不負責處理諸如網絡、外部存儲設備、視頻或其餘通用的I/O處理。
Domain 0:運行在Xen管理程序之上,具備直接訪問硬件和管理其餘客戶操做系統的特權的客戶操做系統。Domain 0 在Xen中擔任管理員的角色,它負責管理其餘虛擬客戶機。Domain 0上運行XAPI接口,是XenServer管理的核心,由一系列的toolstack組成,並提供給XenCenter進行使用。如上圖,Domain 0中還運行了VNC軟件,VNC是一款遠程訪問的圖形顯示軟件,將虛擬機的界面在XenCenter的控制檯中進行顯示,同時對於虛擬機的一些VNC顯示所需的後端設備使用QEMU軟件進行模擬,因此咱們纔可以在XenCenter中看見虛擬機的狀態,其和咱們使用的硬件KVM進行顯示相似。同時,在上圖中咱們還看到,在Domain 0中包含兩個驅動程序,用於支持其餘客戶虛擬機對於網絡和硬盤的訪問請求。這兩個驅動分別是Network Backend Driver和Block Backend Driver。Network Backend Driver直接與本地的網絡硬件進行通訊,用於處理來自Domain U客戶機的全部關於網絡的虛擬機請求。根據Domain U發出的請求,Block Backend Driver直接與本地的存儲設備進行通訊而後,將數據讀寫到存儲設備上。
DomainU:運行在Xen管理程序之上的普通客戶操做系統或業務操做系統,不能直接訪問硬件資源(如:內存,硬盤等)。在上圖咱們能夠看到,2臺Domain U是不一樣的。在 XenServer 中,VM 可在如下兩種模式之一中運行:半虛擬化 (PV) - 虛擬機內核使用特定代碼,此代碼在虛擬機管理程序上運行,以管理設備和內存。全虛擬化 (HVM) - 使用特定處理器功能「捕獲」虛擬機執行的特權指令,以即可以使用未經修改的操做系統。爲了訪問網絡和存儲,會爲虛擬機提供仿真設備,或者也能夠出於性能和可靠性緣由,使用 PV 驅動程序。不管是半虛擬化Domain U仍是徹底虛擬化Domain U,做爲客戶虛擬機系統,Domain U在Xen Hypervisor上運行並行的存在多個,他們之間相互獨立,每一個Domain U都擁有本身所能操做的虛擬資源(如:內存,磁盤等)。並且容許單獨一個Domain U進行重啓和關機操做而不影響其餘Domain U。
管理接口:XenServer中的管理接口的和linux相似,都有GUI和CLI接口,GUI接口使用XenCenter進行實現,XenCenter經過https協議走443端口,和XPAI進行安全通訊,並取得state.db裏面的配置信息並在圖形界面上顯示出來,對於虛擬機的圖形狀態顯示經過VNC軟件進行控制檯顯示輸出。CLI接口使用XE Shell命令實現。在使用CLI控制檯是,在本地暈車CLI的Shell控制檯,經過SSH的22端口鏈接到Domain 0的SSHD進行,其運行模式和咱們使用putty登錄Linux系統進行運維管理並沒有區別。
經過如下兩種方法管理 XenServer:XenCenter 和 XenServer 命令行接口 (CLI)。
GUI:XenCenter
XenServer 主機系統安裝完成後,系統會自帶一個圖形化管理工具:XenCenter。經過XenCenter 能夠完成全部的配置操做,咱們在實施中大部分配置操做都會經過該管理工具實現。XenServer主機使用HTTPS協議經過端口443與XenCenter進行通訊(使用 XenAPI 進行命令和響應的雙向鏈接),並經過端口 5900 與半虛擬化的 Linux VM 進行圖形 VNC 鏈接。在Linux環境下,XenCenter還有一給開源的版本能夠安裝在Linux上對XenServer進行管理。
獲取XenCenter的途徑有3個,第一種是經過網頁的方式訪問XenServer 主機系統的IP地址,便可下載到該工具。第二種就是在安裝光盤或者ISO文件中進行提取,通常路徑爲:.\client_install\XenCenter.msi。第三種是經過Citrix 官網Download(下載)頁面下載,可選擇下載中文版本。
同時,思傑還經過該接口提供了一個基於虛擬機的Web管理控制檯。須要導入一臺OVF的虛擬機WebSelf Service,Web Self Service 是一個輕型門戶,容許每位用戶操做本身的虛擬機,而無需具備 XenServer 主機的管理員憑據。不過該虛擬機控制檯在6.2及之後的版本中已經棄用。
命令行接口 (CLI)
使用XenServer 命令行接口 (CLI) 的方式管理XenServer,須要使用SSH經過22端口登錄XenServer系統進行操做。該方式以命令行的方式對XenServer進行鏈接管理,除了常規的Linux的命令以外,思傑還給咱們提供了一個專門的管理命令:xe,經過該命令能夠完成和XenCenter相同的功能。因爲命令行操做不方便,涉及的參數繁多,這裏咱們就不加以介紹了,若是有須要請參考XenServer 的《XenServer 管理員指南》文檔。
對XenServer的管理須要依靠一個服務:XenAPI(或者XAPI)。 XenAPI是XenServer中的一組管理接口的統稱,是XenServer管理的核心,由一系列的toolstack組成。
XenAPI提供了一個基於 XML-RPC 的 API,該API除了提供給XenCenter以及pool中各主機通訊使用外,還能夠從遠程系統調用 XML-RPC 編寫使用 XenServer 管理 API 的應用程序。
XenServer XAPI中提供的這些Toolstack,其運行與Domain 0中,主要功能以下:
提供Xen的API
存儲元數據的cfg配置文件。
管理/鏈接VM存儲
管理主機網絡CFG配置文件。
管理VM /主機控制檯訪問
管理資源池
高可用性(HA)
監控和統計
虛擬機生命週期管理(即啓動,中止,暫停等)
XenCenter就是經過XAPI來讀取XenServer的配置、管理、License的管理、數據庫的維護等等,同時也包括如存儲(SR)、虛機、虛擬網卡、HA等等全部的功能控制。而Pool中的全部XenServer的操做請求也是經過XAPI傳遞給Dom0,同時在池中的全部主機中間通訊,例如:Pool中數據庫(配置數據庫,由XenServer維護的一個小型數據庫)會經過XAPI在全部的主機之間同步,以便在Master服務器宕機之後,其餘機器可以正確而迅速的取代Master,並維持Pool的功能和服務。
在XenServer的整體架構圖中,咱們還看見了在XPAI和Plugins下面還存放一個State.db的文件,該文件就是存儲一些配置信息的一個簡易數據庫。XAPI會將一些配置信息寫入到該數據庫,同時在須要時還會去調用這個數據庫裏面的培配置信息。那麼這個數據庫中存放了那些配置信息呢?咱們能夠經過以下命令進行查看:./dbtool –a –v /var/xapi/state.db > /root/dbtool_output.txt
打開以後咱們看見裏面存儲了一些對象與對象之間的對應關係信息,其主要信息就是VM與HOSt以及存儲VDI之間的對於關係。咱們在XenCenter的圖形界面看到的虛擬機在那臺Host上,鏈接的那個磁盤,這些真正的對應關係都是在這裏面存儲着的,XenCenter會經過XAPI調取裏面的配置信息並經過本身以圖形界面的形式展示出來。因此這個數據庫不但和XAPI自己的服務相關,還和XenCenter顯示的界面有必定的關係。
下圖顯示了裏面存儲的對應關係圖:
VNC(Virtual Network Computing)是一種藉助RFB協議實現遠程共享和遠程操做的軟件,它藉助網絡傳送鼠標、鍵盤動做和畫面更新數據。因爲VNC使用最底層的繪圖信息(指向顯卡顯存的屏幕像素數據)來進行協議封包和傳送,因此其傳輸數據量大,網絡帶寬要求很高、效率也相對較低;另外,VNC缺少統一規範的安全機制。但也正是由於它傳輸的是平臺無關的底層像素信息,這些信息在其餘任何平臺均可以進行重繪,因此在XenServer和VMWare等服務器虛擬化平臺纔會採用VNC來支持服務器虛擬化客戶端管理軟件對虛擬機終端的跨平臺操做顯示。
VNC在這裏不在詳細介紹,其運做原理是在Domain 0中安裝VNC的服務器端,在XenCenter中集成VNC的客戶端。當用戶點擊其中一臺虛擬機的圖形控制檯窗口的時候,DXenCenter中集成的VNC客戶端就會啓動和Domain 0中的VNC服務器端進行鏈接,其VNC鏈接的身份驗證了XAPI裏面集成的身份驗證信息。在主機上執行的 XML-RPC API 服務器接受客戶端的安全套接字鏈接。這樣,全部 API 調用都在登陸會話上下文中執行,登陸會話是經過在服務器端進行用戶名和密碼驗證生成的。這樣,將能夠對 XenServer 安裝進行安全的、通過身份驗證的訪問。其餘好比VNC的訪問都調用其身份驗證的信息。這時Domain 0會將該臺虛擬機的屏幕操做變化信息進行抓取,並經過VNC協議傳輸到客戶端,在XenCenter的控制檯進行顯示。同時客戶端的VNC經過網絡傳送鼠標、鍵盤動做信息給到Domain 0的服務器端,Domain 0的服務器端在將這些鼠標和鍵盤的操做命令經過XAPI給到Domain中的虛擬機,該臺虛擬機在執行了這些操做後,Domain 0抓取這些變化的圖像畫面傳送到XenCenter的VNC進行顯示。
在Xen的全虛擬化架構中,Xen對硬件三類資源的管理和調度是這樣運做的:對於CPU的管理和調度,加入了對Intel VT 技術和AMD Pacifica 技術的支持,所以可使得虛擬機能夠直接訪問物理CPU資源;對於內存來講,硬件虛擬化技術IOMMU等等也簡化了內存地址之間虛擬與真實的轉換開銷。可是對於IO設備來講,因爲先後端驅動是基於半虛擬化環境開發的,所以,在最初的Xen徹底虛擬化技術中,使用Qemu來仿真PC硬件,包括BIOS、IDE硬盤控制器、VGA圖形適配器(顯卡)、USB控制器、網絡適配器(網卡)等。
在最新的XenServer版本中,好比XenServer 6.5以及 Xen4.4版本中,換成了一個被稱做PVH的新的虛擬化種類,就是在PV的模式下增長對硬件輔助虛擬化的支持,但目前對xen和kernel的版本有要求。就是相比較以上的全虛擬化而言,PVH融合得更加的完全。它是一個使用了針對啓動和I/O的半虛擬化驅動的半虛擬化模式。與HVM全虛擬化不一樣的是,它使用了硬件虛擬化擴展,是不須要進行仿真的。所以去掉了QEMU對一些IO設備的模擬和仿真。
所以QEMU和XenServer的關係是,QEMU模擬和仿真Xen虛擬機的虛擬硬件,包括BIOS、IDE硬盤控制器、VGA圖形適配器(顯卡)、USB控制器、網絡適配器(虛擬網卡)等等,同時結合VNC,模擬虛擬機的啓動與執行命令後的動做,VNC將其畫面抓取以後向前端輸送這些畫面信息。
XenServer的虛擬機安裝tools是爲了使VM具備徹底支持的配置,而且可以使用XenServer管理工具(經過XE CLI或XenCenter中)進行管理。
一個Windows VM不按照XenTools也能夠工做,沒有XenTools,性能會顯著降低。
Xentools是Citrix 半虛擬化網絡和 SCSI 驅動程序 (XenServer Tools) ,可爲虛擬機提供高性能的 I/O 服務,而且不會產生傳統設備仿真所需的系統開銷。這些驅動程序可替代仿真設備,在 Windows 和 XenServer 產品系列軟件之間提供高速傳輸。在安裝 Windows 操做系統期間,XenServer 使用傳統的設備仿真爲 VM 提供標準 IDE 控制器和標準網卡。經過這種方式,Windows 使用內置驅動程序完成安裝,但因爲控制器驅動程序仿真存在固有的系統開銷,於是致使性能下降。
若是沒有安裝XenTools,你不能:
完全關閉 VM
完全從新啓動 VM
掛起 VM
遷移正在運行的 VM(XenMotion)
使用檢查點和回退功能
動態調整分配給正在運行的Linux VM 的 vCPU 數量 - Windows VM 須要從新啓動才能使這種更改生效
若是正在處理的 VM 上未安裝XenServer Tools,則屬性窗格中的常規選項卡上將顯示未安裝 Tools紅色文本消息。若是 XenServer 已經更新,而 VM 上安裝有早期版本的XenServer Tools,此處也會顯示一則消息。在這種狀況下,顯示的消息爲Tools 已過時(已安裝 x.y 版本)。對於 Windows VM,雙擊此文本可切換到 VM 控制檯、加載 ToolsISO 並啓動 Tools 安裝嚮導;對於 Linux VM,雙擊此文本可切換到 VM 控制檯並加載 ToolsISO(可是,必須裝載 ISO 並手動運行安裝)。
本文出自 「我拿流年亂了浮生」 博客,請務必保留此出處http://tasnrh.blog.51cto.com/4141731/1740036