如何在CentOS 6.4上安装并使用OpenVZ

如何在CentOS 6.4上安装并使用OpenVZ,第1张

Virtuozzo以商业虚拟化方案的姿态出现在很多提供虚拟服务器业务的供应商处。OpenVZ内核补丁以GPL许可为基础,而用户层工具则基于QPL许可。

由于采取实用性指南的定位,这篇文章不会包含任何理论背景知识。网络上背景知识方面的资源已经非常丰富,这里我们就不再赘述。这份文档不向大家提供任何效果保证,仅仅作为参考性材料存在。以下流程是否实际生效需视纤历握具体情况而定。 

安装OpenVZ

要完成OpenVZ的安装工作,我们需要先把OpenVZ库添加到毁庆yum当中:

cd /etc/yum.repos.d

wget http://download.openvz.org/openvz.repo

rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

现在打开openvz.repo文件:

vi openvz.repo

接下来禁用[openvz-kernel-rhel5]库(enabled=0)并启用[openvz-kernel-rhel6]库作为替代(enabled=1):

[...]

[openvz-kernel-rhel6]

name=OpenVZ RHEL6-based kernel

#baseurl=http://download.openvz.org/kernel/branches/rhel6-2.6.32/current/

mirrorlist=http://download.openvz.org/kernel/mirrors-rhel6-2.6.32

enabled=1

gpgcheck=1

gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

[openvz-kernel-rhel5]

name=OpenVZ RHEL5-based kernel

#baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/

mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18

enabled=0

gpgcheck=1

gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

[...]

这套库中包含多种OpenVZ内烂宴核(欲了解不同内核的具体情况,请访问http://wiki.openvz.org/Kernel_flavors进行查看)。以下命令

yum search vzkernel

将在屏幕上列出所有可用内核:

[root@server1 yum.repos.d]# yum search vzkernel

[...]

vzkernel.i686 : The Linux kernel

vzkernel.x86_64 : The Linux kernel

vzkernel-devel.i686 : Development package for building kernel modules to match the kernel

vzkernel-devel.x86_64 : Development package for building kernel modules to match the kernel

vzkernel-firmware.noarch : Firmware files used by the Linux kernel

vzkernel-headers.i686 : Header files for the Linux kernel for use by glibc

vzkernel-headers.x86_64 : Header files for the Linux kernel for use by glibc

[...]

[root@server1 yum.repos.d]#

选择其中之一,并按如下命令进行安装:

yum install vzkernel

这一 *** 作应该也会自动更新GRUB引导程序。无论如何,我们现在要打开/boot/grub/menu.lst;现在首个内核中应该已经包含有新的OpenVZ内核了。务必确保default值为0,这样首个内核(也就是OpenVZ内核)才会被自动引导并替换掉默认的CentOS内核。

vi /boot/grub/menu.lst

# grub.conf generated by anaconda

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/mapper/vg_server1-lv_root

# initrd /initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title OpenVZ (2.6.32-042stab057.1)

root (hd0,0)

kernel /vmlinuz-2.6.32-042stab057.1 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/lv_swap rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-042stab057.1.img

title CentOS (2.6.32-279.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/lv_swap rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-279.el6.x86_64.img

现在我们需要安装几款OpenVZ用户工具:

yum install vzctl vzquota

打开/etc/sysctl.conf并确保文件中包含以下设定:

vi /etc/sysctl.conf

[...]

net.ipv4.ip_forward = 1

net.ipv4.conf.default.proxy_arp = 0

net.ipv4.conf.all.rp_filter = 1

kernel.sysrq = 1

net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.all.send_redirects = 0

net.ipv4.icmp_echo_ignore_broadcasts=1

net.ipv4.conf.default.forwarding=1

[...]

如果大家需要对/etc/sysctl.conf进行修改,请在上述命令后添加以下内容:

sysctl -p

如果大家的虚拟机IP地址来自不同子网而非直接采用主机系统的IP地址,那么接下来的步骤非常关键。如果忽略这一步,网络将无法在虚拟机上正常工作。

打开/etc/vz/vz.conf 并将NEIGHBOUR_DEVS 设置为 all:

vi /etc/vz/vz.conf

[...]

NEIGHBOUR_DEVS=all

[...]

如果大家想让OpenVZ正常工作,那么SELinux必须被禁用。打开/etc/sysconfig/selinux 并将SELINUX 的值设为disabled:

vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

最后,重新启动系统:

reboot

如果大家的系统顺利完成了重启,那么恭喜--安装工作成功结束!

运行:

uname -r

这时我们的新OpenVZ内核应该显示以下内容:

[root@server1 ~]# uname -r

2.6.32-042stab057.1

[root@server1 ~]#

在利用OpenVZ创建虚拟机之前,我们需要在/vz/template/cache目录下为所要用到的发行版添加一套模板,这套模板将负责虚拟机的生成工作。大家可以在以下地址中找到预创建模板清单:http://wiki.openvz.org/Download/template/precreated)。

我打算在自己的虚拟机中使用CentOS 6,所以我需要下载CentOS 6模板:

cd /vz/template/cache

wget http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz

现在我要向大家展示使用OpenVZ所涉及的基本命令。

要通过CentOS 6模板建立一套VPS,需要运行:

vzctl create 101 --ostemplate centos-6-x86_64 --config basic

这里的101必须是单独ID--每套虚拟机都需要拥有专属的独立ID。大家可以利用虚拟机IP地址的最后三位数字来为其命名。举例来说,如果虚拟机IP地址为192.168.0.101,那么其ID为101即可。

如果大家希望在系统启动时自动运行虚拟机,则执行以下命令:

vzctl set 101 --onboot yes --save

要为虚拟机设定主机名称与IP地址,则运行以下命令:

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

vzctl set 101 --ipadd 192.168.0.101 --save

接下来我们将套接口数量设置为120,并为虚拟机指派数个域名服务器:

vzctl set 101 --numothersock 120 --save

vzctl set 101 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --nameserver 145.253.2.75 --save

(请注意,这里我们也可以使用vzctl set命令或者直接对/etc/vz/conf目录下的虚拟机配置文件进行编辑。如果虚拟机ID为 101, 那么配置文件的路径应为/etc/vz/conf/101.conf。)

运行以下命令来启动虚拟机:

vzctl start 101

执行以下命令为虚拟机设定root密码:

vzctl exec 101 passwd

大家现在已经可以通过SSH(例如PuTTY)或者手动输入以下命令的方式与虚拟机连通:

vzctl enter 101

是退出虚拟机控制台,可直接输入:

exit

停止虚拟机运行,运行:

vzctl stop 101

重启虚拟机则运行:

vzctl restart 101

如果需要从磁盘中删除虚拟机(前提是我们已经停止了该虚拟机的运行),执行以下命令:

vzctl destroy 101

要列出当前虚拟机清单及其运行状态,需运行:

vzlist -a

[root@server1 cache]# vzlist -a

CTID NPROC STATUSIP_ADDR HOSTNAME

101 14 running 192.168.0.101 test.example.com

[root@server1 cache]#

要查看被指派给对应虚拟机的资源,需运行:

vzctl exec 101 cat /proc/user_beancounters

-

两种不同的虚拟方式,KVM相比XEN来说几乎没有什么缺点,XEN有的功能在KVM上面完全都可以实现!

KVM由以色列公司Qumranet开发,已经被Linux核心组织放入Linux的罩滚内核里面,其使用的x86处理器至少需要包含其中一项硬件辅助虚拟化技术(Intel-VT或AMD-V)。

而 Xen是一个外部的Hypervisor程序(虚拟机管理程序);它能够控制虚拟机和给多个客户机分配资源,行闷锋另一方面,KVM是Linux的一部分, 可使用通常的Linux调度器和内存管理. 这意味着KVM更小更易使用。

此外,Xen同时支持全虚拟化和准虚拟化(需要修改客户机 *** 作系统,而修改过的客户机 *** 作系统能有更好的性能),KVM当前不支持准虚拟化。

Xen的缺点是如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。

相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。

主机档晌测评:

修改过的openvz内核隔离文件系统,内存,为每个虚拟环境分配进程,并为openvz vps管理员提供root权限和跟独立服务器一样的命令集。

Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失,典型的情况下大约损失 2%,在最糟的情况下会有 8% 的效能耗损;与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有极佳的表现。

它们都作为系统级虚拟化平台的主要区别是,xen vps管理员能直接修改linux的内核模块,并能使用swap内存以满足vps内存突然占用过高的需求。

主要区别使用较少的资源

硬性内存限制(没有交换分区)

有限制的修改iptables使用较多的资源

软性内存限制(有交换分区)

无限制修改iptables

根据你的需求选择合适的虚镇芹拟化平台

openvz vps主要优点在于速度和稳定性。openvz平台能满足大多数虚拟专用服务器的需求,是比较合理的选择。OpenVZ的比Xen使用更少的御世毕资源。

Xen vps主机优点是内存使用比较灵活,它能满足内存使用突然超过限制时的需求。如果你运行java环境,编译应用程序和视频解码,那你就得考虑xen平台了。

结论:普遍来说,xen比openvz贵,主要原因是因为openvz可以超卖,而xen则不能。xen对于网站则相对稳定,因为有swap分区。但是如果你的网站经常需要swap,那你就得考虑升级内存了,因为这样运行性能降低很多。选用xen或是openvz,这得看性价比了。

网友的评价:

1. 人说 Buffer cache 在 xen 中,可以提高性能。但可同等价位下 Xen 512M,OpenVZ 可买到 1G(2G Burst)。在这样的条件下 Xen 那少得可怜的 RAM,程序都不够用了,更没有多少空间在 Buffer cache 上了。

而 OpenVZ 下更多的内存用于程序,Buffer cache 计入在 Host OS 内存中的,性能更佳(不超卖的话)

2. 人说 Xen 可以用 SWAP,慢但不会 down 机。可是不要呼略一点,-- SWAP 仅用于保存当前非运行中的程序。“真正”的高并发的情况下,512 M RAM + 4G SWAP Down 机的风险要高于 1G(2G burst) + 0 SWAP。

3. Xen 高定制化,但在同一台 Host 上,必竟是虚拟化主机,就没有过多定制需求了。何况特性上 Provider 已尽可能定制成服务器更优化了。个人非必能定制得这么优化吧,必竟服务器不是你的。

4. 有人说 Xen 下编译性能要比 OpenVZ 快,但很少有普通用户拿 VPS 当编译器吧?这种性能比较,大多出现在企业内部。你不会买 Photonvps当企业编译服务器用吧,那企业也太抠门儿了。

5. 同样的 Xen 响应速度要比 OpenVZ 差,个**验,原因不明。

6. Xen 一样可超卖,网上也有很多被超卖的贴子。只要是软件都会有漏洞。

7. 关于 Xen 比 OpenVZ 更可预期的问题。我的理解如下。

Xen 半虚拟化下,个每个 Guest kernel 都有自己庞大的独立运作机制,要达到高效硬件资源协调,比基于完善的 Linux kernel 的虚拟化容器要困难得多。

举一个例子:以前公司以项目为单位的,所有人都属于项目,大家同一个意识在做同一个项目,很顺畅。后来公司引进矩阵项目管理。发现,当分出来很多‘可复用’部门后,由于每个部门被很返友多

项目复用,他们同时在做项目 A,B 时,只能按一个项目的思路走(A),对另外担当的项目工作效率很低下(B)。半虚拟化可能面临时样的‘协调问题’。当每个 Kernel 都有自己的想法时,动作和結果变得‘不可预期’了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12430254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存