應用程式驅動的伺服器虛擬化方案 Oracle VM 第 1 回 (三)
上一節介紹了 Oracle VM 的各種管理功能,今節將介紹Oracle 虛擬化方案的架構。
邏輯架構說明
以下我們將簡單地了解一下 Oracle 虛擬化方案的架構(圖 6),和目前大多數的伺服器虛擬化方案一樣,OVM 的架構基本上包括了兩個部分,即管理端和 Hypervisor。虛擬化管理端 (Oracle VM Manager) 簡稱 OVMM,主要負責整個虛擬化環境的管理和監控,並提供 Web 管理界面。管理端也是一套基於 Linux 系統安裝和運行的程式集,因此需要在 RHEL 5/6 或 Oracle Linux5/6 上安裝。管理端包括了 Oracle Weblogic 伺服器,資料庫伺服器如 Oracle DB 或者 MySQL、應用程式程式開發架構 (ADF)、JAVA 環境以及 Oracle 虛擬化管理端程式本身。不過 Oracle 已經將這些功能都整合好了,所以在安裝過程中基本上只需要執行一個安裝腳本,所有相關內容都會被自動安裝和配置。

OVS 伺服器
虛擬化伺服器 (Oracle VM Server) 簡稱 OVS,是整個虛擬化架構的主體,單台的 OVS 提供了虛擬機器運行所必要環境和資源,並提供所有對物理和虛擬資源進行管理和監控方法。虛擬機器的運行完全依靠單台 OVS 所提供的硬體資源,而多台 OVS 伺服器彙聚起來將形成物理資源池,在 OVM 中將此資源池稱為伺服器池(Server Pool),相當於常見的群集 (Cluster)。虛擬機器可以隨機運行於任意一台 OVS 伺服器上,而且一切遷移類的操作,如高可用、虛擬機器線上遷移、自動負載平衡等都是基於伺服器池實現的。另外虛擬機器對物理資源的使用,也只限定在同一個資源池當中。只有在同一個伺服器池中的多個 OVS 伺服器,才可以構成真正意義上的高可用群集,並實現相關的群集仲裁和切換等操作。
原生虛擬化方案
OVM 是一種原生 (Native) 的虛擬化解決方案,意味著在物理伺服器上,不需要額外安裝任何作業系統,在硬體裸機上直接安裝OVS 伺服器的套裝程式即可。OVS 伺服器的安裝程式,實際上打包了一個羽量級的作業系統核心和其他重要部件,相當於一個經過裁剪的 Linux,大小只有 200MB,包括 Xen Hypervisor、Domain-0 和群集檔案系統,以及 Oracle VM 代理。Xen Hypervisor 即 VMM 虛擬機器監控管理器,處於硬體與虛擬機器之間,啟動時最先被載入到硬體的第一層,一旦載入就可部署虛擬機器。Xen 通過 Hypervisor,為虛擬機器提供基本的對物理 CPU 和記憶體的存取控制能力,並且實現在單獨的電腦上,運行多個各自獨立、彼此隔離的子作業系統。Hypervisor 扮演著類似交通警察的角色,指揮硬體存取和協調,來自各子作業系統的請求。但 Hypervisor 中不包含任何與硬體對話的驅動,也沒有管理員對話界面,因此還需要另外一個重要部分,即 Domain-0。
Domain-0
在 Xen 的體系架構中,所有虛擬機器叫做 Domain。而在所有這些虛擬機器中,Domain-0 身份特殊,具有很高的特權,負責一些專門的工作。當 Hypervisor 啟動的時候,Domain-0 是第一個被啟動的虛擬機器。它和其他虛擬機器 Domain-U 不同,Domain-0 可以控制其他虛擬機器的啟動、停止等行為。同時 Domain-0 具有直接存取物理硬體的能力,所有其他的虛擬機器,都會由 Domain-0 來提供存取 I/O 設備的驅動,而實現對 I/O 設備的存取。於此同時,Domain-0 中還會載入一個 xend 進程,使用者存取、管理和控制其他的虛擬機器,均由用戶空間工具集和 Xend 進行通訊,來實現最終和 Domain-0 的對話。Domain-0 需要借助於 Linux 核心啟動,因此在 OVS 伺服器上,還包含了一個用於啟動 Domain-0 的 Linux 核心,即 Oracle Unbreakable Enterprise Kernel。該核心由 Oracle 基於 Linux 3.0 所開發,並針對 Oracle 環境進行了大量的定制和優化。
OCFSv2 群集檔案系統
OCFSv2 是一款 Oracle 自己開發的群集檔案系統。OCFSv2 在 Oracle 虛擬化中最重要用途,就是為虛擬化環境提供高可用群集能力。OCFS 檔案系統本身是一個比較複雜的體系,包括了在群集環境中,提供網路心跳管理和磁碟心跳管理的功能。簡而言之就是收集所有 OVS 伺服器的狀態資訊,並引入磁碟仲裁機制來使失效的節點被強制重啟,從而觸發虛擬機器遷移來實現高可用。OCFSv2 另外一個用途,是提供 DLM 功能即分散式鎖管理器,從而實現多個機器,同時對共用檔案系統進行有序和合法的存取。另外 OCFSv2 也作為存放虛擬機器資料資訊的儲存倉庫 (Repository),所有虛擬機器的磁碟、映像檔和配置資訊等資料,都以檔案系統的形式存放。OCFSv2 還提供了檔案系統級別的瘦克隆,即 Thin Clone 功能,以支援虛擬機器克隆時的空間動態分配,也提供了 reflink 功能,可實現對線上和離線的虛擬機器,進行快速的克隆和快照。
OVM 代理
Oracle VM 代理 (Oracle VM Agent) 是一個基於 Python 的代理程式,主要通過 XML-RPC 界面,實現 Oracle VM Manager 和每一個 OVS 伺服器之間的通訊。對每一個 OVS 伺服器的管理和狀態抓取,實際上也是通過代理進行的。除此之外,Agent 實際上是多個進程和服務的集合體,主要負責收集並向 OVMM 報告每一台 OVS 伺服器的狀態,記錄 OVS 伺服器運行的日誌資訊。它負責和 OCFS 檔案系統界面溝通,並在本地維護一個輕量的資料庫。因此 Oracle VM Agent 儘管在 OVS 伺服器上表現為一個服務,但實際上是由多個進程組成的(表 1)。

三種角色
另外,運行在同一個伺服器池中的 OVS 伺服器,從功能角度上,可以分為三種不同的角色。第一個角色是 Server Pool Master,即剛才所提到的 Master Server。Master Server 負責代表 Server Pool 和 Manager 進行通訊,並將 Manager 對 Server Pool 的管理命令,下達到所有其他的 OVS 伺服器上,也就是任何從 Manager 上下發的命令,實際上都要透過 Master,傳遞給其他 的 OVS 伺服器。Master Server 在一個 Server Pool 中只有一個,每個 OVS Server 上運行的 remaster 進程,將確保在原來的 Master 出現問題時,有新的 Master 可以接替。第二個角色是 VM Server,實際上可以將其理解為 Xen 加上 Domain-0 的結合,就是可運行虛擬機器的伺服器。預設情況下,一個伺服器池中所有 OVS Server 都是 VM Server。第三個角色是 Utility Server,一些比較大的 I/O 操作,比如說上傳 ISO、範本、裝配集,P2V 等,都是通過 Utility Server 進行的。預設情況下一個伺服器池中,所有 OVS Server 也都是 Utility Server。
下一節將會更深入說明 Oracle VM 的實際架構,緊貼 Linux Pilot 留意!
填妥以下登記表,下載由 Oracle 發表的 Oracle Linux 7: Optimizing Deployment Flexibility and Increasing ROI 研究報告,了解更多 Oracle Linux 的強大功能。
Pingback: 應用程式驅動的伺服器虛擬化方案 Oracle VM 第 1 回 (四) - Linuxpilot