OpenVZ
開發者 | 社區項目, 由SWsoft支援 |
---|---|
目前版本 |
|
原始碼庫 | |
作業系統 | Linux |
平台 | x86、x86-64、IA-64、PowerPC、SPARC |
類型 | 作業系統層虛擬化 |
許可協定 | GNU GPL v.2 |
網站 | openvz.org |
OpenVZ是基於Linux內核的作業系統級虛擬化技術。OpenVZ允許物理伺服器執行多個作業系統,該技術常用於虛擬專用伺服器(VPS,Virtual Private Server)。
與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虛擬環境的支援。修改後的核心提供了虛擬化,隔離,資源管理和檢查點機制。
虛擬化和隔離
每一個虛擬環境都是一個單獨的個體,表現得和一個物理伺服器所表現的相同。每一個虛擬環境都有其自己的:
- 用戶和用戶組
- 每一個虛擬環境都有其自己的root用戶、用戶和用戶組。
資源管理
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可以在一台相當好的硬件上執行上百個虛擬環境(主要瓶頸是主記憶體和CPU)。
圖示顯示了虛擬環境上的Apache HTTP Server響應時間與虛擬環境數目的關係。測量是在一台有768M主記憶體的機器上進行的;每一個虛擬環境都執行一組通常的行程:init、syslogd、crond、sshd和Apache。Apache用來提供靜態頁面,而這些頁面是由http_load所讀取,然後測度第一個響應的時間。就如你看到的一樣,隨着虛擬環境的數量增加,響應時間由於主記憶體儲存和交換而變得更長。
在這種場景下,在一個768M主記憶體的硬件上執行高達120個這樣的虛擬環境是可能的。並以線性的方式外推,所以可以在1台2G主記憶體的硬件上執行320個這樣的虛擬環境。
集中管理
一台OpenVZ物理伺服器(也稱為硬件節點)的擁有者(root)可以看見所有虛擬環境的行程和檔案。這使得大規模的管理成為可能。試想想當你是用 VMware 或 Xen 來做伺服器整合的情況:為了給你的10個虛擬伺服器進行安全更新,你必須登入到每一台機器並執行更新過程,這跟你為10台物理伺服器進行更新是一樣的。
在OpenVZ,你可以執行一個簡單的shell指令碼,就可以一次更新所有(或只是你選擇的)虛擬環境。
參見
- Linux-VServer
- FreeBSD jail
- 基於內核的虛擬機(KVM)
- Solaris Containers
- 作業系統層虛擬化
- 虛擬機器比較
- Virtuozzo
- EasyVZ,一個OpenVZ圖形管理介面
- HyperVM,基於Web的分散式管理軟件
外部連結
- OpenVZ official web site*(頁面存檔備份,存於互聯網檔案館)
- OpenVZ download site(頁面存檔備份,存於互聯網檔案館)
- OpenVZ forum(頁面存檔備份,存於互聯網檔案館)
- OpenVZ bug tracking system (Bugzilla)
- OpenVZ GIT source repository(頁面存檔備份,存於互聯網檔案館)
- OpenVZ blog(頁面存檔備份,存於互聯網檔案館)
- Comparison with other virtualization techniques(頁面存檔備份,存於互聯網檔案館)
- An OpenVZ kernel hacker interview
- EasyVZ: An OpenVZ management GUI(頁面存檔備份,存於互聯網檔案館)