安装和使用OpenVZ在Ubuntu 8.10

在Ubuntu 8.10上安装和使用OpenVZ

版本1.0
作者:Falko Timme

在本教程中,我将介绍如何为OpenVZ准备Ubuntu 8.10服务器。 使用OpenVZ,您可以在同一硬件上创建多个虚拟专用服务器(VPS),类似于Xen和Linux Vserver项目。 OpenVZ是Virtuozzo的开源分支,Virtuozzo是许多提供虚拟服务器的提供商所使用的商业虚拟化解决方案。 OpenVZ内核补丁是根据GPL许可证授权的,用户级工具是QPL许可证。

这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1初步说明

我在这里使用x86_64(amd64)系统。 如果您在i386系统上,几个命令将略有不同 - 我已经添加了该部分的注释。

2成为根

类型

sudo su

成为root(或使用字符串sudo在本教程中预先添加所有命令)。

3更改默认Shell

/ bin / sh/ bin / dash的符号链接,但是我们需要/ bin / bash ,not / bin / dash 。 所以我们这样做:

ln -sf /bin/bash /bin/sh

4禁用AppArmor

AppArmor是一个安全扩展(类似于SELinux),应该提供扩展的安全性。 在我看来,你不需要配置一个安全的系统,它通常会导致更多的问题,而不是优势(考虑到你做了一周的故障排除后,因为一些服务不能按预期工作,然后你发现一切都很好,只有AppArmor导致了这个问题)。 所以我禁用它。

我们可以禁用它:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

5安装OpenVZ

为了安装OpenVZ,我们需要将OpenVZ存储库添加到/etc/apt/sources.list中

vi /etc/apt/sources.list
[...]
deb http://download.openvz.org/debian-systs lenny openvz
[...]

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

然后下载该存储库的密钥并更新软件包数据库。

要找到可用的OpenVZ软件包(特别是我们需要安装的OpenVZ内核),请运行

apt-cache search openvz
root@server1:~# apt-cache search openvz
vzctl - server virtualization solution - control tools
vzquota - server virtualization solution - quota tools
fzakernel-2.6.24-amd64 - OpenVZ - Meta kernel 2.6.246-fza-amd64 (2.6.24+ovz004.1dso6) on amd64
linux-patch-openvz - OpenVZ - server virtualization solution - Linux kernel patch
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
root@server1:~#

正如你所看到的,在我的情况下,内核命名为fzakernel-2.6.24-amd64 (我在64位Ubuntu 8.10上),所以我安装如下:

apt-get install fzakernel-2.6.24-amd64

如果您使用的是i386系统,则该包名称略有不同(可能是fzakernel-2.6.24-i386 )。

现在打开/boot/grub/menu.lst ...

vi /boot/grub/menu.lst

...并使OpenVZ内核成为默认内核。 在我的/boot/grub/menu.lst我有以下内核...

[...]
## ## End Default Options ##

title           Ubuntu 8.10, kernel 2.6.27-7-server
uuid            a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel          /boot/vmlinuz-2.6.27-7-server root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro quiet splash
initrd          /boot/initrd.img-2.6.27-7-server
quiet

title           Ubuntu 8.10, kernel 2.6.27-7-server (recovery mode)
uuid            a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel          /boot/vmlinuz-2.6.27-7-server root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro  single
initrd          /boot/initrd.img-2.6.27-7-server

title           Ubuntu 8.10, kernel 2.6.24-6-fza-amd64
uuid            a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel          /boot/vmlinuz-2.6.24-6-fza-amd64 root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro quiet splash
initrd          /boot/initrd.img-2.6.24-6-fza-amd64
quiet

title           Ubuntu 8.10, kernel 2.6.24-6-fza-amd64 (recovery mode)
uuid            a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel          /boot/vmlinuz-2.6.24-6-fza-amd64 root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro  single
initrd          /boot/initrd.img-2.6.24-6-fza-amd64

title           Ubuntu 8.10, memtest86+
uuid            a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel          /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

...这意味着OpenVZ内核是第三个内核。 因为计数从0开始,我将默认值更改为2

[...]
default         2
[...]

现在我们安装一些OpenVZ用户工具:

apt-get install vzctl vzquota

打开/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 ,请运行

sysctl -p

之后。

如果虚拟机的IP地址与主机系统的IP地址不同,则以下步骤很重要。 如果不这样做,网络将无法在虚拟机中运行!

打开/etc/vz/vz.conf并将NEIGHBOUR_DEVS设置为全部

vi /etc/vz/vz.conf
[...]
NEIGHBOUR_DEVS=all
[...]

最后重新启动系统:

reboot

如果您的系统重新启动没有问题,那么一切都很好!

重新启动后,再次成为root:

sudo su

uname -r

并且您的新OpenVZ内核应显示:

root@server1:~# uname -r
2.6.24-6-fza-amd64
root@server1:~#

6使用OpenVZ

在使用OpenVZ创建虚拟机之前,我们需要在/ var / lib / vz / template / cache目录中的虚拟机中使用我们要使用的分发模板 。 将从该模板创建虚拟机。

在里面

apt-cache search openvz

输出(见上一章),我们有四个Debian模板,我们可以安装如下( amd64模板在i386主机上可能不可用):

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

您可以使用这些模板之一,但您也可以在http://wiki.openvz.org/Download/template/precreated上找到已预处理模板的列表。

我想在我的虚拟机中使用Ubuntu 8.04,所以我下载了一个Ubuntu 8.04模板(在这种情况下是最小的Ubuntu 8.04模板):

cd /var/lib/vz/template/cache
wget http://download.openvz.org/template/precreated/ubuntu-8.04-amd64-minimal.tar.gz

(如果您的主机是i386系统,则不能使用amd64模板 - 您必须使用i386模板!)

现在我将向您展示使用OpenVZ的基本命令。

要从最小的Ubuntu 8.04模板设置VPS,请运行:

vzctl create 101 --ostemplate ubuntu-8.04-amd64-minimal --config vps.basic

(要从vzctl-ostmpl-debian-4.0-i386-minimal模板包创建VPS,命令将是

vzctl create 101 --ostemplate debian-4.0-i386-minimal --config vps.basic

101必须是uniqe ID - 每个虚拟机必须具有自己的唯一ID。 您可以使用虚拟机的IP地址的最后一部分。 例如,如果虚拟机的IP地址为192.168.0.101 ,则使用101作为ID。

如果要启动vm,请运行

vzctl set 101 --onboot yes --save

要为vm设置主机名和IP地址,请运行:

vzctl set 101 --hostname test.example.com --save
vzctl set 101 --ipadd 192.168.0.101 --save

接下来,我们将套接字数设置为120,并将一些Nameservers分配给vm:

vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save

(而不是使用vzctl set命令,您可以直接编辑存储在/ etc / vz / conf目录中的vm的配置文件,如果vm的ID为101 ,则配置文件为/ etc / vz /conf/101.conf 。)

启动vm,运行

vzctl start 101

要为vm设置root密码,请执行

vzctl exec 101 passwd

您现在可以通过SSH连接到vm(例如使用PuTTY ),或者输入如下:

vzctl enter 101

要离开vm的控制台,请键入

exit

要停止一个vm,运行

vzctl stop 101

要重新启动vm,请运行

vzctl restart 101

要从硬盘驱动器中删除vm(必须先停止才能执行此操作),请运行

vzctl destroy 101

要获取您的vms及其状态列表,请运行

vzlist -a
root@server1:~# vzlist -a
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME
       101          5 running 192.168.0.101   test.example.com
root@server1:~#

要了解分配给vm的资源,请运行

vzctl exec 101 cat /proc/user_beancounters
root@server1:~# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5
       uid  resource           held    maxheld    barrier      limit    failcnt
      101:  kmemsize         593615    1721162   11055923   11377049          0
            lockedpages           0          0        256        256          0
            privvmpages        2111       2491      65536      69632          0
            shmpages            645        661      21504      21504          0
            dummy                 0          0          0          0          0
            numproc               6         11        240        240          0
            physpages          1124       1427          0 2147483647          0
            vmguarpages           0          0      33792 2147483647          0
            oomguarpages       1124       1427      26112 2147483647          0
            numtcpsock            2          2        360        360          0
            numflock              0          1        188        206          0
            numpty                1          2         16         16          0
            numsiginfo            0          2        256        256          0
            tcpsndbuf         24640      24640    1720320    2703360          0
            tcprcvbuf         32768          0    1720320    2703360          0
            othersockbuf       4480      21760    1126080    2097152          0
            dgramrcvbuf           0       8384     262144     262144          0
            numothersock          3          7        120        120          0
            dcachesize        53848      57912    3409920    3624960          0
            numfile             184        254       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
root@server1:~#

failcnt列非常重要,它应该只包含零; 如果没有,这意味着vm需要比当前分配给vm的资源更多的资源。 在/ etc / vz / conf中打开vm的配置文件,并提供相应的资源,然后重新启动vm。

要了解有关vzctl命令的更多信息,请运行

man vzctl

7链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏