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)。

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

模板與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.