在Ubuntu 10.04上安装和使用OpenVZ
在本教程中,我将介绍如何为OpenVZ准备Ubuntu 10.04服务器。 使用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
。 所以我们这样做:
dpkg-reconfigure dash
安装破折号为/ 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
不幸的是,在官方的Ubuntu 10.04存储库中没有OpenVZ软件包,因此我们必须自己构建OpenVZ内核和OpenVZ工具( vzctl
, vzquota
, vzpkg
)。
首先运行
uname -r
了解您当前安装的内核版本:
root@server1:~# uname -r
2.6.32-24-server
root@server1:~#
正如你所看到的,我已经安装了2.6.32-24-server
。
现在我们安装所需的软件包来构建一个新的内核:
aptitude install kernel-package libncurses5-dev fakeroot wget bzip2 module-assistant debhelper
aptitude build-dep linux-image-2.6.32-24-server
(请确保在最后一个命令中使用正确的内核版本,即uname -r
显示的内核版本。)
接下来我们下载2.6.32内核源码以及OpenVZ内核补丁和OpenVZ内核的官方配置:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2
m-a prepare
wget http://download.openvz.org/kernel/branches/2.6.32/2.6.32-belyayev.1/patches/patch-belyayev.1-combined.gz
wget http://download.openvz.org/kernel/branches/2.6.32/2.6.32-belyayev.1/configs/kernel-2.6.32-x86_64.config.ovz
然后跑
kernel-packageconfig
echo "CONCURRENCY_LEVEL := 2" >> /etc/kernel-pkg.conf
(使用numer_of_cpu_cores + 1
为CONCURRENCY_LEVEL
。我的测试系统只有一个CPU内核,所以这使1 + 1 = 2
)
现在我们修补内核源码并准备构建:
tar -xpf linux-2.6.32.tar.bz2
mv linux-2.6.32 linux-2.6.32-openvz
rm -f linux
ln -s linux-2.6.32-openvz linux
cd linux
gunzip -dc ../patch-belyayev.1-combined.gz | patch -p1
cp -rf ../kernel-2.6.32-x86_64.config.ovz .config
make oldconfig
然后我们使用以下命令构建OpenVZ内核:
fakeroot make-kpkg --initrd --append-to-version=-ovz32 --revision=1.0 kernel_image kernel_headers
这可能需要一些时间,所以请耐心等待。
跑
cd ..
ls -l *.deb
之后看到OpenVZ内核的新的.deb
包:
root@server1:/usr/src# ls -l *.deb
-rw-r--r-- 1 root src 6300866 2010-08-18 19:18 linux-headers-2.6.32.14-ovz32_1.0_amd64.deb
-rw-r--r-- 1 root src 26274680 2010-08-18 19:12 linux-image-2.6.32.14-ovz32_1.0_amd64.deb
root@server1:/usr/src#
安装新内核如下:
dpkg -i linux-image-2.6.32.14-ovz32_1.0_amd64.deb linux-headers-2.6.32.14-ovz32_1.0_amd64.deb
然后更新initrd和GRUB bootloader配置:
mkinitramfs -k 2.6.32.14-ovz32 -o /boot/initrd.img-2.6.32.14-ovz32
update-grub
接下来我们构建OpenVZ工具( vzctl
, vzquota
, vzpkg
)。 首先我们安装一些先决条件:
aptitude install git-core git-buildpackage automake autoconf libtool liblockfile-simple-perl cstream liblog-agent-perl ssl-cert postfix rpm yum alien
vzctl
可以建立如下:
cd
git clone git://git.openvz.org/pub/vzctl vzctl
cd vzctl
./autogen.sh
./configure --enable-bashcomp --enable-logrotate
make
make install
make install-debian
vzquota
可以建成如下:
cd
git clone git://git.openvz.org/pub/vzquota vzquota
cd vzquota
make
make install
和vzpkg
可以建立如下:
cd
git clone git://git.openvz.org/pub/vzpkg vzpkg
cd vzpkg
make install
现在我们为OpenVZ创建系统启动链接:
update-rc.d vz defaults
出于兼容性原因,我们创建了以下符号链接:
ln -s /vz /var/lib/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
,请运行
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.32.14-ovz32
root@server1:~#