在Debian Lenny系统中安装和使用OpenVZ

在这篇教程中我将会为大家讲解如何在Debian Lenny服务器上安装OpenVZ。使用OpenVZ你可以在同一个硬件环境中创建多个虚拟化专用服务器(VPS),其作用类似于Xen和Linux Vserver项目。OpenVZ是Virtuozzo旗下的一款开源品牌,提供一个商业的虚拟化解决方案。已经被许多提供虚拟化服务器的提供商使用。OpenVZ内核是遵循GPL授权许可,并且其用户化工具遵循QPL许可。

这篇教程是一篇实用教程,它不包括相关的理论背景,如需了解相关理论背景请查询网络其他的文档。

这篇文档不附带任何形式的保证,我想要说的是这不仅仅是设置此类系统的唯一方法,还有很多达到这个目的的方法,但是我使用的是教程中的方法,我使用此方法,没有任何问题。

前言

我在这里使用的是一个X86_64(amd64平台下)的系统,如果你是在i386平台,在一些命令的使用上或许有些不同,我将会在不同点特别注别。

安装OpenVZ

OpenVZ的内核、vzctl和vzquota包在Debian Lenny库中,我们要使用下列命令安装他们:

$ apt-get install linux-image-openvz-amd64 vzctl vzquota

(如果你是用的是i386的系统,内核包的名字是linux-image-openvz-686

i386的系统会安装以下包:

firmware-linux-free{a} linux-image-2.6.32-5-openvz-686{a}
  linux-image-openvz-686

创建一个提供后台兼容的符号链接从/var/lib/vz 到 /vz。

ln -s /var/lib/vz /vz

打开/etc/sysctl.conf文件并且确保使用下面的设置:

$ vi /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

如果你要修改/etc/sysctl.conf文件运行下列命令:

$ sudo sysctl –p

然后,

Ps:如果你的虚拟机的ip地址是一个不同子网的主机ip地址的话下一步就显得很重要了。如果你不这样做的话,虚拟机的网络可能不会正常工作。

打开/etc/vz/vz.conf文件并设置NEIGHBOUR_DEVS 参数值为 all:

$ vi /etc/vz/vz.conf
 
# Controls which interfaces to send ARP requests and modify APR tables on.
NEIGHBOUR_DEVS=all

在这个环境中,我同时也想安装vzdump和vzprocps包,这两个包并不存在Debian lenny库中。但是我们可以从http://download.openvz.org/debian-systs的网站里的Etch库中下载.(他们曾经也提供Lenny库,但是最近已经被删除了)因此打开/etc/apt/sources.list文件…

$ vi /etc/apt/sources.list

在这个文件中添加下面的语句:

deb http://download.openvz.org/debian-systs etch openvz

当然我们想从Etch 库中安装文件时不把我们的系统搞糟。我们设置系统只有在在Lenny库中没有适当的软件时,我们才使用Etch库。如果在一个包同时存在在Lenny和 Etch版本中时,系统优先在Lenny中安装它。要做到这一点,我们可以在/etc/apt/preferences中可以设置给Lenny更高的权限:

$vi /etc/apt/preferences
 
Package: *
Pin: release a=lenny
Pin-Priority: 700
 
Package: *
Pin: release a=etch
Pin-Priority: 650

然后我们打开/etc/apt/apt.conf文件…

$ vi /etc/apt/apt.conf

在这个文件中添加下面两行:

APT::Default-Release “stable”;
APT::Cache-Limit “100000000″;

运行下列命令

$ wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add – && apt-get update

然后下载库中的关键部分和更新软件包数据库.

然后运行

$ apt-get install vzdump vzprocps

来安装vzdump和vzprocps.

最后,重启系统:

$ sudo reboot

如果系统重启正常,说明安装顺利!

运行命令

$ uname –r

现在系统将会显示新的OpenVZ的内核:

server1:~# uname -r
2.6.26-1-openvz-amd64
server1:~#

使用 OpenVZ

在我们使用OpenVZ创建虚拟机之前,我们需要在/var/lib/vz/template/cache文件夹下注意模板的范围,在即将使用的虚拟机里。我们可以通过模板来创建虚拟机。

运行命令

apt-cache search openvz

在输出的结果中你会看到一些Debian的模板。例如:

vzctl-ostmpl-debian-4.0-amd64-minimal – OpenVZ – OS Template debian-4.0-amd64-minimal
vzctl-ostmpl-debian-4.0-i386-minimal – OpenVZ – OS Template debian-4.0-i386-minimal
vzctl-ostmpl-debian-5.0-amd64-minimal – OpenVZ – OS Template debian-5.0-amd64-minimal
vzctl-ostmpl-debian-5.0-i386-minimal – OpenVZ – OS Template debian-5.0-i386-minimal

可以使用下面命令来安装你需要安装系统的模板(ps:amd64平台下的模板不可以在i386主机上使用):

$ apt-get install vzctl-ostmpl-debian-5.0-amd64-minimal vzctl-ostmpl-debian-4.0-amd64-minimal

你可以使用这些模板的其中一个,你同时也可以在 http://wiki.openvz.org/Download/template/precreated 找到一个模板的列表.例如,我们不通过apt命令安装vzctl-ostmpl-debian-5.0-amd64-minimal模板。而是使用下列命令下载:

$ cd /var/lib/vz/template/cache
$ wget http://download.openvz.org/template/precreated/contrib/debian-5.0-amd64-minimal.tar.gz

(ps:如果你的主机是i386系统,你不能使用amd64的模板——你必须使用i386的模板)

下面,我将会为大家来展示使用OpenVZ的最基本的命令.

假使我们想试用vzctl-ostmpl-debian-5.0-amd64-minimal模板来设置一个虚拟机(ps:你可以在/var/lib/vz/template/cache文件里找到它),运行下列命令:

$ sudo vzctl create 101 –ostemplate debian-5.0-amd64-minimal –config vps.basic

在这里101必须是一个唯一的ID-每一个虚拟机虚拟拥有独一无二的ID。你可以使用虚拟机ip地址的最后一部分,例如,如果虚拟机ip地址是192.168.0.101,你可以使用101作为虚拟机的ID.

如果你想在系统启动时打开vm,运行下列命令

$ sudo vzctl set 101 –onboot yes –save

使用下列命令可以设置为虚拟机设置主机名和ip地址:

$ sudo vzctl set 101hostname test.example.com –save
$ sudo vzctl set 101 –ipadd 192.168.0.101 –save

下面,我们设置接口的数量为120,然后为虚拟机委派几个域名服务器:

$ sudo vzctl set 101 –numothersock 120 –save
$ sudo vzctl set 101 –nameserver 145.253.2.75 –nameserver 213.191.92.86 –save

(ps:如果想不是用vzctl命令,你也可以在/etc/vz/conf文件家里直接编辑虚拟机的配置文件。如果虚拟机的ID是101,其配置文件的位置在etc/vz/conf/101.conf.)

使用下列命令可以启动虚拟机

$ sudo vzctl start 101

使用下列命令可以为虚拟机设置一个root密码

$ sudo vzctl exec 101 passwd

使用下列命令可以通过ssh连接到虚拟机(类似于PUTTY):

$ sudo vzctl enter 101

想要离开虚拟机的终端,直接输入

$ exit

停止虚拟机,运行

$ sudo vzctl stop 101

启动虚拟机,运行

$ sudo vzctl restart 101

从硬盘里删除虚拟机(ps:在删除之前需要停止虚拟机),运行

$ sudo vzctl destroy 101

可以通过下列命令查看所有虚拟机的列表和其当前的状态

$ sudo vzlist –a
 
server1:~# vzlist -a
VEID      NPROC STATUS  IP_ADDR         HOSTNAME
101          8 running 192.168.0.101   test.example.com
server1:~#

使用下列命令查看分配给虚拟机的资源

$ sudo vzctl exec 101 cat /proc/user_beancounters
 
server1:~# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5
uid  resource           held    maxheld    barrier      limit    failcnt
101:  kmemsize         500737     517142   11055923   11377049          0
lockedpages           0          0        256        256          0
privvmpages        2315       2337      65536      69632          0
shmpages            640        640      21504      21504          0
dummy                 0          0          0          0          0
numproc               7          7        240        240          0
physpages          1258       1289          0 2147483647          0
vmguarpages           0          0      33792 2147483647          0
oomguarpages       1258       1289      26112 2147483647          0
numtcpsock            2          2        360        360          0
numflock              1          1        188        206          0
numpty                1          1         16         16          0
numsiginfo            0          1        256        256          0
tcpsndbuf         17856      17856    1720320    2703360          0
tcprcvbuf         32768      32768    1720320    2703360          0
othersockbuf       2232       2928    1126080    2097152          0
dgramrcvbuf           0          0     262144     262144          0
numothersock          1          3        120        120          0
dcachesize            0          0    3409920    3624960          0
numfile             189        189       9312       9312          0
dummy                 0          0          0          0          0
dummy                 0          0          0          0          0
dummy                 0          0          0          0          0
numiptent            10         10        128        128          0
server1:~#

failcnt这一列非常重要,它通常是显示为0。如果不是0的话,这就意味着,当前的虚拟机需要更多的系统资源。打开位于/etc/vz/conf目录下的配置文件,然后适当的增加资源,最后重启虚拟机。

查询更多关于vzctl命令,运行

$ man vzctl

文章来源

server/web/openvz-on-debian-lenny-amd64.txt · 最后更改: 2010/09/24 20:19 (外部编辑)
[unknown link type]到顶部
GNU Free Documentation License 1.3
京ICP备05034962号 Debian Driven by DokuWiki get firefox browser Recent changes RSS feed Valid XHTML 1.0