本頁使用了標題或全文手工轉換

OpenVZ

維基百科,自由的百科全書
前往: 導覽搜尋
OpenVZ
OpenVZ
開發者 社群項目,
SWsoft支援
作業系統 Linux
系統平台 x86x86-64IA-64PowerPCSPARC
類型 作業系統層虛擬化
許可協定 GNU GPL v.2
網站 openvz.org
原始碼庫 src.openvz.org/scm/ovz/openvz-docs.git

OpenVZ是基於Linux內核作業系統作業系統級虛擬化技術。OpenVZ允許物理伺服器執行多個作業系統,被稱虛擬專用伺服器(VPS,Virtual Private Server)或虛擬環境(VE,Virtual Environment)。

VMware這種虛擬機Xen這種硬體輔助虛擬化技術相比,OpenVZ的主機與客戶系統都必須是Linux(雖然在不同的虛擬環境裡可以用不同的Linux發行版)。但是,OpenVZ聲稱這樣做有效能上的優勢。根據OpenVZ網站的說法,使用OpenVZ與使用獨立的實體伺服器相比,效能只會有1-3%的損失。

OpenVZ的Linux客戶系統其實是共用OpenVZ主機Linux系統的內核,也就意味著OpenVZ的Linux客戶系統不能升級內核。

OpenVZ是SWsoft, Inc.公司開發的專有軟體Virtuozzo(Virtuozzo虛擬機器還支援Windows客戶系統)的基礎。OpenVZ的授權為GPLv2

OpenVZ由兩部分組成,一個經修改過的作業系統核心與一套用戶工具。

但是,基於OpenVZ的Linux虛擬機器/Linux VPS可能配置起來不如基於KVM的Linux虛擬機器/Linux VPS靈活。例如,OpenVZ虛擬機器/VPS無法更新內核;不支援部分軟體;其不能升級內核的限制也可能會給Linux的發行版升級帶來麻煩。

核心[編輯]

OpenVZ的核心是Linux,並進行了修改以加入對OpenVZ虛擬環境的支援。修改後的核心提供了虛擬化,隔離,資源管理和檢查點機制。

虛擬化和隔離[編輯]

每一個虛擬環境都是一個單獨的個體,表現得和一個物理伺服器所表現的相同。每一個虛擬環境都有其自己的:

檔案
系統應用軟體,虛擬化的/proc/sys,虛擬化的等等。
用戶和用戶組
每一個虛擬環境都有其自己的root用戶、用戶和用戶組。
行程樹
虛擬環境只能看見其自己的行程(從init開始)。PID也是虛擬化的,所以init的PID是1。
網路
虛擬的網路裝置,允許虛擬環境擁有自己的IP位址,以及一組netfilter (iptables)路由規則。
裝置
如果需要,任何虛擬環境都可以授予存取真正裝置,如網路介面串列埠磁碟分割等的權力。
行程間通訊物件
共享記憶體信號量訊息傳遞

資源管理[編輯]

OpenVZ的資源管理包括三個部分:兩級磁碟配額,公平的CPU排程器,以及user beancounters。這些資源在虛擬環境的執行過程中可以調整,可以不必重新開機動。

兩級磁碟配額[編輯]

每一個虛擬環境都有其自己的磁碟配額,以磁碟的block數和inode(大概相當於文件的數目)的數目來計算。在虛擬環境中,可以通過標準的工具來設定UNIX用戶和用戶組的磁碟配額

CPU排程器[編輯]

OpenVZ中的排程器是一個兩級的公平分享排程策略的實現。

在第一級,排程器根據每個虛擬環境的cpuunits的值決定哪一個虛擬環境被分配CPU時間片。在第二級,標準的Linux排程器使用標準的Linux行程優先級和相關機制決定該虛擬環境中的哪一個行程獲得CPU。

檢查點機制和動態遷移[編輯]

2006年4月中旬的OpenVZ發布了動態遷移和檢查點功能。這使得在將一個虛擬環境從一個物理伺服器遷移到另一個物理伺服器的過程中不需要進行關機。這個過程被稱為動態遷移:一個虛擬環境被凍結,然後它的所有狀態被存到磁碟中的一個檔案中;這個檔案被傳輸到另外一個機器,然後虛擬環境在那裡被解凍(取消復原)。整個過程的延遲時間只有數秒。由於狀態通常被完整地保護,這個暫停看起來就像一個正常的計算延遲。

用戶級工具[編輯]

OpenVZ提供了命令列工具來管理虛擬環境(vzctl)和虛擬環境中的軟體(vzpkg)。

vzctl[編輯]

這是一個簡單的用於管理一個虛擬環境的高階命令列工具。

模板與vzpkg[編輯]

可以用OpenVZ的模板快速部署OpenVZ Linux虛擬機器,OpenVZ的模板可在OpenVZ的網站下載。不同Linux發行版所用的模板不同。比如,使用CentOS 7的模板部署採用CentOS 7發行版的OpenVZ虛擬機器,使用Debian 8的模板部署採用Debian 8發行版的OpenVZ虛擬機器等。

OpenVZ的特色[編輯]

可延伸性[編輯]

由於OpenVZ使用了一個單獨的核心模型,它就和2.6版的Linux核心有著同樣的可延伸性。它支援高達64個CPU和64G記憶體,一個單獨的虛擬環境可以擴放到整個物理伺服器,比如說使用所有的CPU和所有的記憶體。

密度[編輯]

OpenVZ density on a 768 Mb (¾ Gb) RAM box

OpenVZ可以在一台相當好的硬體上執行上百個虛擬環境(主要瓶頸是記憶體和CPU)。

圖示顯示了虛擬環境上的Apache HTTP Server回應時間與虛擬環境數目的關係。測量是在一台有768M記憶體的機器上進行的;每一個虛擬環境都執行一組通常的行程:initsyslogd、crond、sshd和Apache。Apache用來提供靜態頁面,而這些頁面是由http_load所讀取,然後測度第一個響應的時間。就如你看到的一樣,隨著虛擬環境的數量增加,回應時間由於記憶體儲存和交換而變得更長。

在這種場景下,在一個768M記憶體的硬體上執行高達120個這樣的虛擬環境是可能的。並以線性的方式外推,所以可以在1台2G記憶體的硬體上執行320個這樣的虛擬環境。

集中管理[編輯]

一台OpenVZ物理伺服器(也稱為硬體節點)的擁有者(root)可以看見所有虛擬環境的行程和檔案。這使得大規模的管理成為可能。試想想當你是用 VMware 或 Xen 來做伺服器整合的情況:為了給你的10個虛擬伺服器進行安全更新,你必須登入到每一台機器並執行更新過程,這跟你為10台物理伺服器進行更新是一樣的。

在OpenVZ,你可以執行一個簡單的shell指令碼,就可以一次更新所有(或只是你選擇的)虛擬環境。

參見[編輯]

外部連結[編輯]