【51CTO独家特稿】 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内核的选项,请选择该项目进入系统)。
#p#
二、通过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
#p#
三、通过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网站发表技术类文章。
【编辑推荐】