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

OpenVZ
OpenVZ
開發者社區項目,
SWsoft支援
目前版本
  • 7.0 (2016年7月26日)[1]
編輯維基數據連結
原始碼庫 編輯維基數據連結
作業系統Linux
平台x86x86-64IA-64PowerPCSPARC
類型作業系統層虛擬化
許可協定GNU GPL v.2
網站openvz.org

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由兩部分組成,一個經修改過的Linux內核與一套用戶工具。

核心 編輯

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

虛擬化和隔離 編輯

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

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

資源管理 編輯

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指令碼,就可以一次更新所有(或只是你選擇的)虛擬環境。

參見 編輯

外部連結 編輯

  1. ^ http://openvz.livejournal.com/53870.html.