在Ubuntu 13.04(AMD64)上安装和使用OpenVZ
在本教程中,我将介绍如何为OpenVZ准备Ubuntu 13.04服务器。 使用OpenVZ,您可以在同一硬件上创建多个虚拟专用服务器(VPS),类似于Xen和Linux Vserver项目。 OpenVZ是Virtuozzo的开源分支,Virtuozzo是许多提供虚拟服务器的提供商所使用的商业虚拟化解决方案。 OpenVZ内核补丁是根据GPL许可证授权的,用户级工具是QPL许可证。
这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1初步说明
我在这里使用x86_64(amd64)系统。 如果您使用的是i386系统,则几个命令将略有不同。
2安装OpenVZ
对于Ubuntu 13.04,官方存储库中没有OpenVZ内核。 因此,我们必须从OpenVZ项目的官方RPM软件包中安装 OpenVZ(请参阅在Debian 6.0中从RPM安装内核 ) - 使用ploop支持
2.1从OpenVZ项目的官方RPM软件包安装
从http://wiki.openvz.org/Download/kernel/rhel6和http://wiki.openvz.org/Download/utils下载最新的vzkernel,vzctl,ploop和vzquota RPM软件包,例如:
cd /tmp
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-2.6.32-042stab076.8.x86_64.rpm
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-devel-2.6.32-042stab076.8.x86_64.rpm
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-4.3.1-1.x86_64.rpm
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-core-4.3.1-1.x86_64.rpm
wget http://download.openvz.org/utils/ploop/1.7/ploop-1.7-1.x86_64.rpm
wget http://download.openvz.org/utils/ploop/1.7/ploop-lib-1.7-1.x86_64.rpm
wget http://download.openvz.org/utils/vzquota/3.1/vzquota-3.1-1.x86_64.rpm
安装以下软件包...
apt-get install fakeroot alien libcgroup1
...并将RPM包转换为DEB包:
fakeroot alien --to-deb --scripts --keep-version vz*.rpm ploop*.rpm
安装DEB包,如下所示:
dpkg -i vz*.deb ploop*.deb
接下来,我们必须确保在重新启动系统时启动正确的内核(OpenVZ内核)。 在最后一个命令的输出中,您应该看到如下:
Setting up vzkernel (2.6.32-042stab076.8) ...
update-initramfs: Generating /boot/initrd.img-2.6.32-042stab076.8
WARNING: could not open /lib/modules/2.6.32-042stab076.8/modules.builtin: No such file or directory
WARNING: could not open /tmp/mkinitramfs_I0VIfE/lib/modules/2.6.32-042stab076.8/modules.builtin: No such file or directory
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.8.0-19-generic
Found initrd image: /boot/initrd.img-3.8.0-19-generic
Found linux image: /boot/vmlinuz-2.6.32-042stab076.8
Found initrd image: /boot/initrd.img-2.6.32-042stab076.8
Found memtest86+ image: /memtest86+.bin
done
这意味着系统上还有另一个内核( 3.8.0
),而openVZ内核( 2.6.32
)不是列表中的第一个。 因此,为了使OpenVZ内核成为默认内核,我们有两个选项 - 调整GRUB中的默认内核(推荐)或删除非VZ内核。
要调整GRUB中的默认内核,请打开/ etc / default / grub
...
vi /etc/default/grub
...并修改GRUB_DEFAULT
行(从0
开始计数;我们的OpenVZ是Ubuntu
GRUB子菜单的高级选项
中的第三个内核(这是3.8.0内核后的引导菜单中的第二个选项),因此我们需要在这里放入“1> 2”
(引号) - 您可以在这里找到关于GRUB子菜单的更多信息: https : //help.ubuntu.com/community/Grub2/Submenus ):
[...] GRUB_DEFAULT="1>2" [...] |
更新GRUB之后:
update-grub
要删除默认内核,请运行...
apt-get remove linux-image linux-image-3.8.0-19-generic
...并更新GRUB:
update-grub
现在我们已经确保正确的内核启动,我们可以继续。
接下来,我们必须检查我们是否在/ etc / fstab
中使用UUID而不是设备名称,否则系统可能无法使用openVZ内核引导。 跑...
blkid
...找出您的设备/分区的UUID:
root@server1:/tmp# blkid
/dev/sda1: UUID="9b8299f1-b2a2-4231-9ba1-4540fad76b0f" TYPE="ext2"
/dev/sda5: UUID="M83xtW-GofR-FFaa-myo1-T4Gw-grKe-Kg1Etc" TYPE="LVM2_member"
/dev/mapper/server1--vg-root: UUID="a5a6e916-64e1-4af9-8bd4-32491d7edcac" TYPE="ext4"
/dev/mapper/server1--vg-swap_1: UUID="a68ae8a2-c2cd-4e92-af08-a71661f8f719" TYPE="swap"
root@server1:/tmp#
打开/ etc / fstab
:
vi /etc/fstab
我的原始/ etc / fstab
看起来如下(您看到, / boot
分区的UUID已经被使用,但是对于/和swap,设备名称正在使用中):
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda1 during installation UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 /dev/mapper/server1--vg-swap_1 none swap sw |
修改它,以便UUID用于所有分区:
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> #/dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 UUID=a5a6e916-64e1-4af9-8bd4-32491d7edcac / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda1 during installation UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 #/dev/mapper/server1--vg-swap_1 none swap sw 0 0 UUID=a68ae8a2-c2cd-4e92-af08-a71661f8f719 none swap sw 0 0 |
确保OpenVZ在启动时自动启动:
update-rc.d vz defaults
update-rc.d vzeventd defaults
接下来我们需要链接几个库:
ln -s /usr/lib64/libvzctl-4.3.1.so /usr/lib
ln -s /usr/lib64/libploop.so /usr/lib
如果要使用ploop容器,请执行以下操作:
apt-get install parted
另外,打开/etc/init.d/vz
...
vi /etc/init.d/vz
...并添加行mkdir $ VARLOCK / ploop
,以确保重新启动后重新创建目录/ var / lock / ploop
:
#!/bin/sh # Copyright (C) 2000-2009, Parallels, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # OpenVZ startup script, used for redhat and debian related distributions. ### # chkconfig: 2345 96 20 # description: OpenVZ startup script. ### ### BEGIN INIT INFO # Provides: vz # Required-start: $network $remote_fs $syslog # Required-stop: $network $remote_fs $syslog # Should-Start: sshd vzeventd # Should-Stop: sshd vzeventd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: OpenVZ startup script # Description: OpenVZ startup script. ### END INIT INFO # This line is needed to cheat /etc/init.d/rc who expects action word . /usr/libexec/vzctl/scripts/initd-functions mkdir $VARLOCK/ploop [...] |
从/ vz
创建一个符号链接到/ var / lib / vz
以提供向后兼容性:
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
[...] # Controls which interfaces to send ARP requests and modify APR tables on. NEIGHBOUR_DEVS=all [...] |
安装vzdump
:
apt-get install vzdump
最后重新启动系统:
reboot
如果您的系统重新启动没有问题,那么一切都很好!
跑
uname -r
并且您的新OpenVZ内核应显示:
root@server1:~# uname -r
2.6.32-042stab076.8
root@server1:~#