OpenVZ
OpenVZ是基於Linux內核的操作系統級虛擬化技術。OpenVZ允許物理伺服器運行多個操作系統,該技術常用於虛擬專用伺服器(VPS,Virtual Private Server)。
![]() | |
![]() | |
開發者 | 社區項目, 由SWsoft支持 |
---|---|
當前版本 |
|
源代碼庫 | |
操作系統 | Linux |
平台 | x86、x86-64、IA-64、PowerPC、SPARC |
類型 | 作業系統層虛擬化 |
許可協議 | 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虛擬環境的支持。修改後的核心提供了虛擬化,隔離,資源管理和檢查點機制。
虛擬化和隔離
每一個虛擬環境都是一個單獨的個體,表現得和一個物理服務器所表現的相同。每一個虛擬環境都有其自己的:
- 用戶和用戶組
- 每一個虛擬環境都有其自己的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(頁面存檔備份,存於網際網路檔案館)