在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链接
- OpenVZ: http : //openvz.org
- Ubuntu: http : //www.ubuntu.com