OpenVZ(OpenVZ官方網站:http://www.openvz.org)是一種Linux平臺下的虛擬化解決方案。OpenVZ采用SWsoft的Virutozzo虛擬化服務器軟件產品的內核(Virutozzo是SWsoft 公司提供的商業虛擬化解決方案)。OpenVZ在單個物理服務器上創建隔離的虛擬專用服務器(VPS或虛擬環境,VE),從而提高服務器利用率并確保應用程序之間不會相互干擾。每個VPS的運行都和獨立的服務器完全一致:VPS可以獨立重起,具有根訪問權限,用戶、IP 地址、內存、處理器、文件、應用程序、系統庫和配置文件等。OpenVZ軟件同時為用戶提供工具,協助自動化管理虛擬服務器。基于模板的應用程序部署可以在幾分鐘內用簡單的方法創建新的虛擬服務器并投入使用,而且與其他的虛擬化技術相比,OpenVZ可以在每臺CPU上運行幾倍于其他虛擬化服務器技術的虛擬化服務器。
本文將講述Debian Squeeze (AMD64)平臺下安裝及使用OpenVZ的基本方法。
一、安裝OpenVZ
1、通過如下命令安裝OpenVZ(如果使用32位平臺則需要安裝linux-image-openvz-686)。
srv75:~# apt-get install linux-image-openvz-amd64 vzdump vzctl vzquota srv75:~# ln -s /var/lib/vz /vz
2、將如下內容增加到/etc/sysctl.conf文件中。
net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1
3、通過如下命令使/etc/sysctl.conf文件中的修改立即生效。
srv75:~# sysctl -p
4、修改/etc/vz/vz.conf文件中的如下參數。
NEIGHBOUR_DEVS=all
5、重新啟動計算機(如下圖所示,啟動后會發現Grub中多了一個使用OpenVZ內核的選項,請選擇該項目進入系統)。
二、通過OpenVZ建立虛擬機
在OpenVZ安裝完成后首選需要建立虛擬機,最簡單的方法是直接下載OpenVZ官方提供的各種Linux發行版的虛擬機模板使用(下載地址:http://download.openvz.org/template/precreated/)。通過模板建立虛擬機的基本步驟如下:
1、通過如下命令下載虛擬機模板。
srv75:~# cd /var/lib/vz/template/cache srv75:~# wget http://download.openvz.org/template/precreated/contrib/debian-6.0-amd64-minimal.tar.gz
2、通過如下命令使用模板建立虛擬機(其中200是給要建立虛擬機定義一個編號,該編號必須是唯一的,以后通過OpenVZ管理這些虛擬機時就需要使用該編號)。
srv75:~# vzctl create 200 --ostemplate debian-6.0-amd64-minimal --config basic
3、使用如下命令將建立的虛擬機處于啟動狀態。
srv75:~# vzctl set 200 --onboot yes --save
4、使用如下命令配置虛擬機的IP地址、主機名等參數。
srv75:~# vzctl set 200 --hostname ov1.example.zqin --save srv75:~# vzctl set 200 --ipadd 192.168.159.200 --save srv75:~# vzctl set 200 --numothersock 120 --save srv75:~# vzctl set 200 --nameserver 192.168.159.1 --nameserver 202.103.24.68 --save
5、使用如下命令正式啟動虛擬機。
srv75:~# vzctl start 200
6、使用如下命令為虛擬機root用戶設置登錄密碼。
srv75:~# vzctl exec 200 passwd
7、至此虛擬機已完成可以使用??梢酝ㄟ^ssh連接到虛擬機進行其它操作,也可以通過如下命令進行虛擬機進行操作。
srv75:~# vzctl enter 200
三、通過OpenVZ管理虛擬機
下面介紹幾個管理OpenVZ虛擬機的常用命令。
1、在虛擬機上執行命令。
srv75:~# vzctl exec 200 ls /etc/rc2.d/ README S01bootlogs S01rsyslog S02cron S02ssh S03rc.local S03rmnologin S03stop-bootlogd
1、重新啟動虛擬機。
srv75:~# vzctl restart 200
2、關閉虛擬機。
srv75:~# vzctl stop 200
3、刪除虛擬機。
srv75:~# vzctl destroy 200
4、查看已有虛擬機。
srv75:~# vzlist -a CTID NPROC STATUS IP_ADDR HOSTNAME 200 6 running 192.168.159.200 ov1.example.zqin 201 - stopped 192.168.159.201 ov2.example.zqin 202 - stopped 192.168.159.202 ov3.example.zqin
5、查看某虛擬機資源占用的情況。
srv75:~# vzcalc -v 200 Resource Current(%) Promised(%) Max(%) Low Mem 0.10 2.67 2.67 Total RAM 0.18 n/a n/a Mem + Swap 0.06 2.12 n/a Alloc. Mem 0.49 2.64 5.04 Num. Proc 0.02 n/a 0.73 -------------------------------------------- Memory 0.49 2.67 5.04
6、詳細查看OpenVZ為虛擬機分配的資源。
顯示的內容共七列,每列含義如下:
• uid:虛擬機的編號。
• held:當前資源的使用狀況。
• maxheld:顯示的是在一個周期內,資源使用的最大值(一個周期是指從啟動虛擬機到結束之間的時間)。
• barrier和limit:顯示用于控制資源的設定值。
• failcn:顯示被拒絕分配資源的次數。如果failcn的值增大很可能表示沒有足夠的內存分配給應用程序。
下面介紹是幾個比較重要的值:
• kmemsize:該參數用于顯示內核使用的內存大小(內核只能常駐內存不能使用swap,單位byte。
• privvmpages:該參數顯示分配的內存+swap的大小(不是實際使用內存),單位page(將page換算成MB的方法:page值*4/1024)。這個參數只是顯示分配的內存大小,但并不是實際使用內存的大小。
• physpages:該參數顯示實際使用的內存大小,單位page(所有單獨虛擬機的實際使用內存相加就是OpenVZ的內存消耗)。
• vmguarpages:該參數顯示將多少內存分配給了虛擬機(Dedicated RAM),單位page。
• oomguarpages:該參數顯示在 Dedicated RAM耗盡了的情況下有多少額外內存可以供虛擬機使用,單位page。
作者簡介:張勤,MCSE、MCDBA、RHCE,從事軟件開發(Delphi、Java)、項目管理、系統集成工作。曾參與多個基于Windows及Linux的大型系統集成項目,并在國內多個知名IT網站發表技術類文章。
原文鏈接:http://os.51cto.com/art/201103/248500.htm